2014-09-03 46 views
0

Iam試圖將用戶輸入值從一個活動傳遞給另一個活動。在第二次活動中,Iam對數據進行一些操作並顯示最終值。但它正在給出一個空投影。請幫我調試錯誤:java.lang.NullPointerException

我的代碼中有什麼錯誤?

第一活動:

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

    final EditText et; 
    final Button b; 

    et = (EditText) findViewById(R.id.editText1); 
    b = (Button) findViewById(R.id.button1); 

    b.setOnClickListener(new OnClickListener() { 


     @Override 
     public void onClick(View v) 
{ 
       Intent intent = new Intent(Fourth.this, Fifth.class); 
       intent.putExtra("thetext", et.getText().toString()); 
       startActivity(intent); 

      Intent intentnew = new Intent(Fourth.this, Sixth.class); 
      intentnew.putExtra("thetext", et.getText().toString());    
      startActivity(intentnew); 

} 

其中數據被接收並顯示的下一個活動(代碼段)

TextView tvr = (TextView) findViewById(R.id.finalremark); 


double wto=Double.parseDouble(getIntent().getExtras().getString("the text")); 

          double z=wto*0.75; 

          String weight= Double.toString(z); 

          tvr.setText(weight); 

的logcat的

09-03 11:11:06.069: E/AndroidRuntime(30262): FATAL EXCEPTION: main 
09-03 11:11:06.069: E/AndroidRuntime(30262): java.lang.NullPointerException 
09-03 11:11:06.069: E/AndroidRuntime(30262): at com.example.footforthought.Sixth$2.handleMessage(Sixth.java:380) 
09-03 11:11:06.069: E/AndroidRuntime(30262): at android.os.Handler.dispatchMessage(Handler.java:99) 
09-03 11:11:06.069: E/AndroidRuntime(30262): at android.os.Looper.loop(Looper.java:137) 
09-03 11:11:06.069: E/AndroidRuntime(30262): at android.app.ActivityThread.main(ActivityThread.java:4517) 
09-03 11:11:06.069: E/AndroidRuntime(30262): at java.lang.reflect.Method.invokeNative(Native Method) 
09-03 11:11:06.069: E/AndroidRuntime(30262): at java.lang.reflect.Method.invoke(Method.java:511) 
09-03 11:11:06.069: E/AndroidRuntime(30262): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:993) 
09-03 11:11:06.069: E/AndroidRuntime(30262): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:760) 
09-03 11:11:06.069: E/AndroidRuntime(30262): at dalvik.system.NativeStart.main(Native Method) 
09-03 11:11:17.969: I/Process(30262): Sending signal. PID: 30262 SIG: 9 
+3

張貼您的logcat – 2014-09-03 05:56:54

+1

並標記您的NPE來自哪裏。 – Jens 2014-09-03 05:58:16

+1

您可以同時開始兩項活動。爲什麼? – 2014-09-03 06:02:36

回答

2

'thetext' ..。您已在空間中添加了空格。刪除空格

double wto=Double.parseDouble(getIntent().getExtras().getString("thetext"));//here remove the space in name 'thetext' 

          double z=wto*0.75; 

          String weight= Double.toString(z); 

          tvr.setText(weight); 
+1

我會在將'getString()'返回給''''''''傳遞給'parseDouble'前防守地添加一個檢查。 – 2014-09-03 06:04:34

2

您在檢索數據時給出了錯誤的鍵值。 同時節省了鍵值對,請注意的關鍵 -

intent.putExtra( 「thetext」,et.getText()的toString());

雖然檢索鍵值對,請注意密鑰(有一個額外的空間。)

雙WTO = Double.parseDouble(getIntent()。getExtras()。的getString( 「文本」) );

更改上述行來

double wto=Double.parseDouble(getIntent().getExtras().getString("thetext")); 

,它應該工作的罰款。