Android intent 将 getIntExtra 设置为全局变量



我有三个活动,主要,第二活动和第三活动。我想将 int 变量从 Main 发送到 SecondActivity,然后从 Main(我得到的(和 SecondActivity 发送到 ThirdActivity。

主要活动:

String Score = 0;
public void onNextClick(View view){
Score++;
Intent intent = new Intent(this, SecondActivity.class);
intent.putExtra("Answer", Score);
startActivity(intent);
finish();
}

第二项活动:

Intent intent = getIntent();
int Score2 = intent.getIntExtra("Answer", 0);
public void onNextClick(View view){
Score2++;
Intent intent = new Intent(this, ThirdActivity.class);
intent.putExtra("Answer2", Score2);
startActivity(intent);
finish();
}

但是我得到错误:

java.lang.RuntimeException: 无法实例化活动 ComponentInfo{com.kvizzadatak/com.kvizzadatak.SecondActivity}: java.lang.NullPointerException at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2174( at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2298( at android.app.ActivityThread.access$800(ActivityThread.java:144( at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1246( at android.os.Handler.dispatchMessage(Handler.java:102( at android.os.Looper.loop(Looper.java:212( at android.app.ActivityThread.main(ActivityThread.java:5151( at java.lang.reflect.Method.invokeNative(Native Method( at java.lang.reflect.Method.invoke(Method.java:515( at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868( at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:684( at dalvik.system.NativeStart.main(Native Method( 原因:java.lang.NullPointerException at com.kvizzadatak.ThirdActivity.(第三场活动.java:23( at java.lang.Class.newInstanceImpl(Native Method( at java.lang.Class.newInstance(Class.java:1208( at android.app.Instrumentation.newActivity(Instrumentation.java:1061( at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2165( at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2298( at android.app.ActivityThread.access$800(ActivityThread.java:144( at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1246( at android.os.Handler.dispatchMessage(Handler.java:102( at android.os.Looper.loop(Looper.java:212( at android.app.ActivityThread.main(ActivityThread.java:5151( at java.lang.reflect.Method.invokeNative(Native Method( at java.lang.reflect.Method.invoke(Method.java:515( at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868( at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:684( at dalvik.system.NativeStart.main(Native Method(

如果要将任何内容放在可以轻松全局访问的位置,则可以使用共享首选项或全局常量类。要使用共享首选项,请执行以下操作

SharedPreferences sp = getSharedPreferences("your_prefs", Activity.MODE_PRIVATE);
SharedPreferences.Editor editor = sp.edit();
editor.putInt("Answer2", score2);
editor.commit();

要访问它,您可以使用 -

SharedPreferences sp = getSharedPreferences("your_prefs", Activity.MODE_PRIVATE);
int myIntValue = sp.getInt("Answer2", -1);

如果您想使用 Intents 进行传输,那么您的 getIntent 应该是 Android 生命周期方法的一部分。因此,您应该最好在onCreate方法中执行以下代码。

Intent intent = getIntent();
int Score2 = intent.getIntExtra("Answer", 0);

最新更新