2013-12-09 7 views
-1

Когда я пытаюсь отправить какой-либо текст на следующий Activity, программа выдает сообщение о том, что «исключение нулевого указателя не может начать работу», но без использования Intent ExtraIntent отлично работает.Исключение Java null указателя при использовании простого Intent Extra

Основная деятельность

public class MainActivity extends Activity implements OnClickListener{ 
EditText et; 

public final static String KEY="com.example.myprotrial"; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    et = (EditText) findViewById(R.id.editText1); 
    Button btn =(Button)findViewById(R.id.button1); 
    btn.setOnClickListener(this); 
} 

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

@Override 
public void onClick(View arg0) { 
    Intent i = new Intent(MainActivity.this,MyActivity.class); 
    i.putExtra(KEY, et.getText().toString()); 
    startActivity(i); 
} 

} 

MyActivity

public class MyActivity extends Activity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_my); 
    Intent intent=getIntent(); 
    String a = intent.getStringExtra(MainActivity.KEY); 
    TextView tv = (TextView) findViewById(R.id.textView1); 
    tv.setText(a); 
} 

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

LogCat

12-09 13:58:33.115: E/AndroidRuntime(1588): FATAL EXCEPTION: main 
12-09 13:58:33.115: E/AndroidRuntime(1588): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.myprotrial/com.example.myprotrial.MyActivity}: java.lang.NullPointerException 
12-09 13:58:33.115: E/AndroidRuntime(1588):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2211) 
12-09 13:58:33.115: E/AndroidRuntime(1588):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261) 
12-09 13:58:33.115: E/AndroidRuntime(1588):  at android.app.ActivityThread.access$600(ActivityThread.java:141) 
12-09 13:58:33.115: E/AndroidRuntime(1588):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256) 
12-09 13:58:33.115: E/AndroidRuntime(1588):  at android.os.Handler.dispatchMessage(Handler.java:99) 
12-09 13:58:33.115: E/AndroidRuntime(1588):  at android.os.Looper.loop(Looper.java:137) 
12-09 13:58:33.115: E/AndroidRuntime(1588):  at android.app.ActivityThread.main(ActivityThread.java:5103) 
12-09 13:58:33.115: E/AndroidRuntime(1588):  at java.lang.reflect.Method.invokeNative(Native Method) 
12-09 13:58:33.115: E/AndroidRuntime(1588):  at java.lang.reflect.Method.invoke(Method.java:525) 
12-09 13:58:33.115: E/AndroidRuntime(1588):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737) 
12-09 13:58:33.115: E/AndroidRuntime(1588):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 
12-09 13:58:33.115: E/AndroidRuntime(1588):  at dalvik.system.NativeStart.main(Native Method) 
12-09 13:58:33.115: E/AndroidRuntime(1588): Caused by: java.lang.NullPointerException 
12-09 13:58:33.115: E/AndroidRuntime(1588):  at com.example.myprotrial.MyActivity.onCreate(MyActivity.java:18) 
12-09 13:58:33.115: E/AndroidRuntime(1588):  at android.app.Activity.performCreate(Activity.java:5133) 
12-09 13:58:33.115: E/AndroidRuntime(1588):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087) 
12-09 13:58:33.115: E/AndroidRuntime(1588):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2175) 
12-09 13:58:33.115: E/AndroidRuntime(1588):  ... 11 more 
+3

Вам не хватает самых важных частей вашего местоположения. Пожалуйста, отредактируйте и опубликуйте все это – codeMagic

+1

Я угадываю, что ваш TextView в MyActivity имеет значение null, поскольку, когда вы удалили лишний, и он «работал», вы никогда не пытались получить доступ к вашему TextView «tv» – dymmeh

+1

a/'нужна помощь как можно скорее» , b/начать с ** чтения ** вашего stacktrace, проблема в нем. – njzk2

ответ

1

Проблема заключается в том, что ваш журнал Cat не указывает, на какой линии происходит NPE.

Из кода:

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_my); 
    Intent intent=getIntent(); 
    String a = intent.getStringExtra(MainActivity.KEY); 
    TextView tv = (TextView) findViewById(R.id.textView1); 
    tv.setText(a); 
} 

если NPE происходит на intent.getStringExtra тогда ваше намерение является недействительным. Если он находится на tv.setText(a), то, скорее всего, макет activity_my не содержит textView1. Пройдите через него в отладчике и посмотрите переменные экземпляра.

+0

«Проблема в том, что ваш LogCat не указывает, на какой строке происходит NPE». Да. – codeMagic

+0

Ребята .. как вы читаете logcat? Невозможно это понять –

+0

@DShaw Я не проверял свой макет MyActivity ... ему не хватало идентификатора для текстового просмотра ... И возможно ли, чтобы виджеты одного макета деятельности использовались другим действием? –

Смежные вопросы