2012-12-13 162 views
1

我正在做一個簡單的程序來添加從EditText輸入的兩個數字。 但是,當用戶點擊按鈕'點擊添加'留下的字段爲空,程序退出說'不幸的是,程序已停止。'不幸的是android應用程序已停止

下面是代碼:

public class MainActivity extends Activity { 

long a, b, sum; 
Button add, clr; 
EditText e1, e2, res; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    add = (Button) findViewById(R.id.bAdd); 
    add.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) throws NumberFormatException { 
      // TODO Auto-generated method stub 

       e1 = (EditText) findViewById(R.id.tv1);   
       String str1 = e1.getText().toString(); 

       e2 = (EditText) findViewById(R.id.tv2); 
       String str2 = e2.getText().toString(); 

       try{ 
        a = Integer.parseInt(str1); 
        b = Integer.parseInt(str2); 
       }catch(NumberFormatException e){ 
        res.setText("Please enter valid entries"); 
       } 

       sum = a + b;  

       res = (EditText) findViewById(R.id.result); 
       res.setText("Your sum is " + sum); 
     } 
    }); 

    clr = (Button) findViewById(R.id.bClr); 
    clr.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) throws NumberFormatException { 
      // TODO Auto-generated method stub 
      e1.setText(""); 
      e2.setText(""); 
      res.setText(""); 
     } 
    }); 
} 

} 

我希望應用程序響應空白的EditText項「請輸入有效的條目」。

+0

添加您的崩潰日誌 –

+1

沒有onClick方法拋出NumberFormatException .. –

回答

1

你行:

res = (EditText) findViewById(R.id.result); 

必須移動,讓您使用res.setText之前,你的資源變量的初始化。它沒有在你的catch語句中初始化。 將其移動到下面指示的位置。當你做你的其他findViewById

e1 = (EditText) findViewById(R.id.tv1); 
e2 = (EditText) findViewById(R.id.tv2); 
res = (EditText) findViewById(R.id.result); 
+0

非常感謝TanjaV ... !!! – Adi

+0

快樂,很高興我能幫上忙 – CocoNess

1

,因爲你正在從編輯一個空文本texts..so檢查空第一

@Override 
    public void onClick(View v) throws NumberFormatException { 
     // TODO Auto-generated method stub 

      e1 = (EditText) findViewById(R.id.tv1); 
      e2 = (EditText) findViewById(R.id.tv2); 

      if(e1.getText() != null && e2.getText() != null) { 

      String str1 = e1.getText().toString(); 


      String str2 = e2.getText().toString(); 

      try{ 
       a = Integer.parseInt(str1); 
       b = Integer.parseInt(str2); 
      }catch(NumberFormatException e){ 
       res.setText("Please enter valid entries"); 
      } 

      sum = a + b;  

      res = (EditText) findViewById(R.id.result); 
      res.setText("Your sum is " + sum); 
      } 
    } 
0

是。

添加這些行。

if (e1.getText().toString() == null || e2.getText().toString() == null) 
{ 
     //Show dialog 
} 
else 
{ 
    String str1 = e1.getText().toString(); 
    String str2 = e2.getText().toString(); 
    try{ 
         a = Integer.parseInt(str1); 
         b = Integer.parseInt(str2); 
        }catch(NumberFormatException e){ 
         res.setText("Please enter valid entries"); 
        } 

        sum = a + b;  

        res = (EditText) findViewById(R.id.result); 
        res.setText("Your sum is " + sum); 
    } 
} 

而且tutorial任何幫助的警告對話框

0

而不是捕捉NumberFormatException的你可以趕上try catch塊任何異常,請您及時發佈日誌貓錯誤你得到你可以初始化它。

相關問題