簡體   English   中英

使用putExtras將int變量傳遞給另一個活動會使應用程序崩潰

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM