2012-11-26 158 views
0

這是一個在android中的簡單應用程序。它在執行時顯示nullpointerexception。 我無法從edittext獲得值。在這裏,我只想從edittext獲得值。 但它顯示nullpointerexception ..如何解決android中的NullPointer異常?

如何解決這個問題?

public class Calci extends Activity { 
    Button add; 
    String str1; 
    String str2; 
    EditText txt1; 
    EditText txt2; 
    TextView tv; 

    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_calci); 

     add=(Button) findViewById(R.id.button1); 
     txt1=(EditText) findViewById(R.id.editText1); 
     str1=txt1.getText().toString(); 
     txt2=(EditText) findViewById(R.id.editText2); 
     str2=txt2.getText().toString(); 
     tv=(TextView) findViewById(R.id.textView4); 

     addition(); 

     add.setOnClickListener(new View.OnClickListener() { 

      public void onClick(View v) { 
       addition(); 
      } 
     }); 
    } 


    private void addition(){ 
     int res=0; 
     res=Integer.parseInt(str1)+Integer.parseInt(str2); 
     tv.setText(String.valueOf(res)); 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.activity_calci, menu); 
     return true; 
    } 
} 
+3

請出示您的logcat –

+0

找到它允許您從logcat的錯誤的行。 –

+0

它沒有顯示logcat。顯示一個消息框,運行該應用程序。 – AndRaGhu

回答

2

確保您在XML爲editText1editText2設置的默認值,或者如果您要訪問的值由用戶輸入,然後chnage你的代碼,並刪除除( )setOnClickListener前:

 // addition(); comment this line 
     add.setOnClickListener(new View.OnClickListener() 
     { 

      public void onClick(View v) 
      { 
        str1=txt1.getText().toString(); 
        str2=txt2.getText().toString(); 
        addition(); 

      } 
     }); 
2

剛剛從onCreate()刪除addition();。因爲我懷疑它第一次叫你的EditTexts是空的。

此外,當你調用addition()方法,你必須從你的兩個EditTexts文本。

而且你的方法addition()類似,

private void addition() 
{ 

    int res=0; 
    str1=txt1.getText().toString(); 
    str2=txt2.getText().toString(); 
    res=Integer.parseInt(str1)+Integer.parseInt(str2); 
    tv.setText(String.valueOf(res)); 
} 
+0

然後我應該聲明方法? – AndRaGhu

+0

只在Button的'onClick()'中。或者如果你想放入你的'onCreate()',那麼在Layout XML文件的EditText屬性中放置一些默認值。在調用'additon()'之前或給'str1'和'str2'一些默認值。 – user370305

0

你不叫除了()這個方法在這裏:

 str2=txt2.getText().toString(); 
     tv=(TextView) findViewById(R.id.textView4); 

     //addition(); 


     add.setOnClickListener(new View.OnClickListener() 
1

只需更換你的OnCreate()的additiion()方法,改變方法,如下面

private void addition() 
    { 
     str1= str1==null?"0":str1;// do like this, so that if str1 returns null then it will be replaced by 0 
     str2= str2==null?"0":str2; 
     int res=0; 
     res=Integer.parseInt(str1)+Integer.parseInt(str2); 
     tv.setText(String.valueOf(res)); 
    } 
+0

嗨,我需要解釋一下這個pblm。並在此之前,感謝您的幫助.. – AndRaGhu

+0

當你的字符串將變爲null時,它會自動幫助你通過使用此代碼獲取空指針異常 –