[英]Passing an int variable to another activity makes the app crash,using putExtras
我試圖將特定的int變量傳遞給另一個類,但它使程序崩潰。 請看一看:
第一次活動
public void highQuiz(View view){
Intent j= new Intent(this,HighScoreTable.class);
j.putExtra("new_variable_name",(int)lowerInt);
startActivityForResult(j, 0); }
第二次活動
TextView hs1 = (TextView)findViewById(R.id.textView1);
Bundle extras = getIntent().getExtras();
if (extras != null) {
int lowerInt= extras.getInt("new_variable_name");
hs1.setText(""+lowerInt);
}
日志
04-29 18:36:21.243: E/AndroidRuntime(2104): FATAL EXCEPTION: main
04-29 18:36:21.243: E/AndroidRuntime(2104): Process: oxley.It, PID: 2104
04-29 18:36:21.243: E/AndroidRuntime(2104): java.lang.RuntimeException: Unable to start activity ComponentInfo{oxley.It/oxley.It.HighScoreTable}: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setText(java.lang.CharSequence)' on a null object reference
04-29 18:36:21.243: E/AndroidRuntime(2104): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2298)
04-29 18:36:21.243: E/AndroidRuntime(2104): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360)
04-29 18:36:21.243: E/AndroidRuntime(2104): at android.app.ActivityThread.access$800(ActivityThread.java:144)
04-29 18:36:21.243: E/AndroidRuntime(2104): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278)
04-29 18:36:21.243: E/AndroidRuntime(2104): at android.os.Handler.dispatchMessage(Handler.java:102)
04-29 18:36:21.243: E/AndroidRuntime(2104): at android.os.Looper.loop(Looper.java:135)
04-29 18:36:21.243: E/AndroidRuntime(2104): at android.app.ActivityThread.main(ActivityThread.java:5221)
04-29 18:36:21.243: E/AndroidRuntime(2104): at java.lang.reflect.Method.invoke(Native Method)
04-29 18:36:21.243: E/AndroidRuntime(2104): at java.lang.reflect.Method.invoke(Method.java:372)
04-29 18:36:21.243: E/AndroidRuntime(2104): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
04-29 18:36:21.243: E/AndroidRuntime(2104): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
04-29 18:36:21.243: E/AndroidRuntime(2104): Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setText(java.lang.CharSequence)' on a null object reference
04-29 18:36:21.243: E/AndroidRuntime(2104): at oxley.It.HighScoreTable.onCreate(HighScoreTable.java:25)
04-29 18:36:21.243: E/AndroidRuntime(2104): at android.app.Activity.performCreate(Activity.java:5933)
04-29 18:36:21.243: E/AndroidRuntime(2104): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105)
04-29 18:36:21.243: E/AndroidRuntime(2104): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2251)
04-29 18:36:21.243: E/AndroidRuntime(2104): ... 10 more
從堆棧跟蹤看起來像textview為null
TextView hs1 = (TextView)findViewById(R.id.textView1);
在執行findViewById之后,請確保已定義了textview及其不為null。
在開始活動時,您將保持該整數值的意圖。 在閱讀第二項活動時,您是從意圖內的Bundle獲取的,因此您沒有得到。 因此請從意圖中讀取該整數值。
TextView hs1 = (TextView)findViewById(R.id.textView1);
Intent i=getIntent();
i.getIntExtra("new_variable_name",0);
hs1.setText(""+lowerInt);
嘗試
if(getIntent().hasExtra("new_variable_name"))
getIntent().getIntExtra("new_variable_name");
在您的第一個活動中
更改
j.putExtra("new_variable_name",(int)lowerInt);
至
j.putExtra("new_variable_name",lowerInt);
無需將值解析為整數。
然后在你的第二活動
更改
Bundle extras = getIntent().getExtras(); if (extras != null) { int lowerInt= extras.getInt("new_variable_name"); hs1.setText(""+lowerInt); }
至
Bundle extras = getIntent().getIntExtra();
if (extras != null) {
int lowerInt= extras.getIntExtra("new_variable_name");
hs1.setText(String.valueOf(lowerInt));
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.