2014-09-03 2 views
0

Iam пытается передать входное значение пользователя из одного действия в другое. Во втором действии Iam выполняет некоторые манипуляции с данными и отображает окончательное значение. Но это дает исключение nullpointer.Пожалуйста, помогите мне отладить ошибку: 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

Опубликуйте свой логарифм –

+1

И отметьте линию, откуда приходит ваш NPE. – Jens

+1

Вы начинаете два действия одновременно. ЗАЧЕМ? –

ответ

2

'ЬЬеТехЬ' ... вы добавили пробелы между ними. Измените пространство

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()' return 'null', прежде чем передать его в' parseDouble'. –

2

При задании данных вы вводите неверное значение ключа. При сохранении пары ключей значение, обратите внимание на ключ -

intent.putExtra ("ЬЬеТехЬ", et.getText() ToString().);

при извлечении пары ключей значения, обратите внимание на ключ (Существует дополнительное пространство.)

двойного WTO = Double.parseDouble (getIntent(). GetExtras(). GetString ("текста"));

Изменение выше линии

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

и он должен работать нормально.