2015-03-15 3 views
0

Доверьтесь, что вы в порядке. Вы помогли одному из членов сообщества получить запрос (Android app crashes when nothing is entered and button is pressed) в случае сбоя приложения, когда ничего не вводится в поле EditText. У меня такая же проблема, но мое приложение все еще сбой, когда я правильно ввожу код.Приложение для Android отключается, когда ничего не вводится при нажатии кнопки

Я был бы признателен, если бы вы могли посмотреть мой код ниже и сообщить мне, что мне, возможно, придется изменить, чтобы он работал. Я путаюсь с тем, что используется num1, и, как вы можете видеть, я не могу изменить num1 в test, поскольку он используется для моего onClick для генерации электронной почты.

Заранее спасибо.

public void calculateTS(View v){ 
    String status; 
    test = Double.parseDouble(edtResult.getText().toString()); 
    String result = String.format("%.2f", test); 
    Log.d("MyActivity", result); 

    EditText editText = (EditText)findViewById(R.id. edtResult); 
    Double num1 = 0.0; 
    final String myStr = editText.getText().toString(); 
    if (!myStr.isEmpty()) 
    { 
     num1 = Double.parseDouble(myStr); 
    } 
    else 
    { 
     Toast.makeText(getApplicationContext(), getResources().getString(R.string.noinput), 
       Toast.LENGTH_LONG).show(); 
     if(test < 20.5) { 
      status = "Poor"; 
     } else if (test >= 20.5 && test < 50.5){ 
      status = "Average"; 
     } else if (test >= 50.5 && test < 100.0) { 
      status ="Well Done"; } 
     AlertDialog alertDialog = new AlertDialog.Builder(this).create(); 
     alertDialog.setTitle("Result Feedback..."); 
     alertDialog.setMessage(status); 
     alertDialog.setButton("Acknowledged", new DialogInterface.OnClickListener() { 
      public void onClick(DialogInterface dialog, int which) { 
       if(test< 20.5)){ 
        String email = "[email protected]"; 
        String subject = "Feedback"; 
        String message = "Hello,\n\nTest."; 
        final Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND); 
        emailIntent.setType("plain/text"); 
        emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL, new String[] { email }); 
        emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, subject); 
        emailIntent.putExtra(android.content.Intent.EXTRA_TEXT, message); 

        startActivityForResult(Intent.createChooser(emailIntent, "Send Mail..."), 1234); 
       } 
      } 
     }); 

     alertDialog.show(); 
    } 
+0

@Der Golem Пожалуйста, помогите с вышеуказанным –

+1

Вы находитесь в счастливой позиции отладки. На какой линии он падает, какое исключение вы получаете? –

+0

Пожалуйста, дайте нам больше деталей, таких как erros, исключения, полученные ... вы также можете использовать Log.d («DEBUG», «to debug»), чтобы выполнить отладку и проверить, где вы получаете ошибку. – porthfind

ответ

1

Похоже, что у вас перепутаны ваши дела. Если поле пустое, просто тост, что поле пустое и ничего не делать. Если поле не пустое, тогда сделайте все остальное.

//This should be a member variable 
Double test;  

public void calculateTS(View v){ 
    String status; 


    EditText editText = (EditText)findViewById(R.id.edtResult); 
    Double num1 = 0.0; 
    final String myStr = editText.getText().toString(); 
    if (myStr.isEmpty()) 
    { 
     //num1 = Double.parseDouble(myStr); //looks like this is not used? 

     Toast.makeText(getApplicationContext(), getResources().getString(R.string.noinput), 
       Toast.LENGTH_LONG).show(); 
    } 
    else 
    { 
     test = Double.parseDouble(myStr); 
     String result = String.format("%.2f", test); 
     Log.d("MyActivity", result); 

     if(test < 20.5) { 
      status = "Poor"; 
     } else if (test >= 20.5 && test < 50.5){ 
      status = "Average"; 
     } else if (test >= 50.5 && test < 100.0) { 
      status ="Well Done"; } 
     AlertDialog alertDialog = new AlertDialog.Builder(this).create(); 
     alertDialog.setTitle("Result Feedback..."); 
     alertDialog.setMessage(status); 
     alertDialog.setButton("Acknowledged", new DialogInterface.OnClickListener() { 
      public void onClick(DialogInterface dialog, int which) { 
       if(test< 20.5)){ 
        String email = "[email protected]"; 
        String subject = "Feedback"; 
        String message = "Hello,\n\nTest."; 
        final Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND); 
        emailIntent.setType("plain/text"); 
        emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL, new String[] { email }); 
        emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, subject); 
        emailIntent.putExtra(android.content.Intent.EXTRA_TEXT, message); 

        startActivityForResult(Intent.createChooser(emailIntent, "Send Mail..."), 1234); 
       } 
      } 
     }); 

     alertDialog.show(); 
    } 
+0

Удивительное спасибо, что так много Даниэль по-настоящему ценит вашу помощь, блестящую работу. –

+0

Привет, просто быстрый вопрос, который только что тестировал приложение, и заметил, что на экране ничего не отображается, если значение, введенное в editText, равно> = 20.5 и <50.5, отображающее «Среднее» или для> = 50.5 & <100.0 как " Отлично сработано". –

+0

Ahh, я только заметил, что внутри вашего 'onClick()' у вас есть 'if (test <20.5)) {', поэтому он будет выполнять вашу логику только для случая «бедных». Вы собирались создать для них логику? –

Смежные вопросы