2014-06-14 236 views
0

我有一個應用程序應該是:
1.如果微調值是「1」,從EditText值做一定的數學方程
2.如果微調值是「2」,從EditText做一定的數學方程值 我收到 「NullPointerException異常」
這裏是我的代碼:
(Android)如何抓取EditText值?

package org.infinitech.degreescalculator.app; 
import android.app.Activity; 
import android.os.Bundle; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.view.View; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.Spinner; 
import android.widget.TextView; 
public class MainActivity extends Activity{ 
    public Button button=(Button)findViewById(R.id.button); 
    public String selectedItem; 
    Integer number; 
    Integer a; 
    String numberTwo; 
    @Override 
    protected void onCreate(Bundle savedInstanceState){ 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     final EditText input=(EditText)findViewById(R.id.input); 
     final TextView answerText=(TextView)findViewById(R.id.answer); 
     final Spinner spinner=(Spinner)findViewById(R.id.options); 
      final String inputTwo=(String)getText(R.id.input); 
    selectedItem=(String)spinner.getSelectedItem(); 
     button.setOnClickListener(new View.OnClickListener(){ 
      public void onClick(View v){ 
       if(selectedItem.equals("Fahrenheit to Celsius")){ 
        a=Integer.parseInt(inputTwo); 
        number=a*100; 
        numberTwo=number.toString(); 
        answerText.setText(numberTwo); 
       } 
      } 
     }); 
    } 
    @Override 
    public boolean onCreateOptionsMenu(Menu menu){ 
     getMenuInflater().inflate(R.menu.main,menu); 
     return true; 
    } 
    @Override 
    public boolean onOptionsItemSelected(MenuItem item){ 
     return super.onOptionsItemSelected(item); 
    } 
} 
+0

歡迎來到StackOverflow!當你有一個特定的問題時,我們在這裏提供幫助。我建議你啓動一個調試器來幫助你縮小問題的範圍。調試完成後,如果您仍然無法弄清楚如何解決問題,請隨時提出更多問題。 –

+0

[可惜MyApp已停止。如何解決這個問題?](http://stackoverflow.com/questions/23353173/uncomfort-myapp-has-stopped-how-can-i-solve-this) –

回答

0

您的問題是selectedItem在您onCreate方法,它運行之前任何在微調的項目具有分配被選中,因此總是null。將分配給它的線移動到按鈕單擊偵聽器的方法onClick中,並且它應該解決問題。

同樣,您可能還需要將inputTwo變量移動到onClick方法中,所以也不會在創建時設置,也不會更新。

0

你可以得到的值作爲String這樣的:

editTextObject.getText().toString() 
+0

感謝您的快速回復,我添加了我的代碼。希望你可以從那裏調試它。 –

+0

@InfiniTech你的問題是什麼? –

+0

@ Code-Apprentice我收到「NullPointerException」。由於沒有警告或錯誤,我無法看到在此代碼中會導致什麼情況。 –

0

實際上,這條線final String inputTwo=(String)getText(R.id.input);不會給出任何值,而是直接在按鈕的onclick中獲取它的文本。

更改此:

a=Integer.parseInt(inputTwo); 

到:

a=Integer.parseInt(input.getText().toString());