java - getExtras() 在向后导航时返回 null

标签 java android

所以,我开始 MainActivity.java 有以下代码。

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    findViewById(R.id.button).setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Intent i = new Intent(MainActivity.this, SecondActivity.class);
            Bundle bundle = new Bundle();
            bundle.putString("testString", "TestString");
            i.putExtras(bundle);
            startActivity(i);
        }
    });
}

我的 ScondActivity.java 有以下代码。

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    String s = getIntent().getExtras().getString("testString");
    Log.v(SecondActivity.class.getSimpleName(), s);

    findViewById(R.id.button).setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Intent i = new Intent(SecondActivity.this, ThirdActivity.class);
            Bundle bundle = new Bundle();
            bundle.putString("testString", "TestString");
            i.putExtras(bundle);
            startActivity(i);
        }
    });
}

我的 ThirdActivity.java 有以下代码。

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_third);

    String s = getIntent().getExtras().getString("testString");
    Log.v(ThirdActivity.class.getSimpleName(), s);
}

当我运行这个应用程序时,一切正常。但是当我从 ThirdActivity.java 返回到 SecondActivity.java 时,我在 String s = getIntent().getExtras 上得到了 NullPointerException ().getString("testString");.

我该如何克服这个问题?

非常感谢任何可能的帮助。

最佳答案

您收到此错误是因为使用 Intent 从一个 Activity 传递到另一个 Activity 的数据是临时的,并且在您切换到另一个 Activity 时被销毁。 当您从 SecondActivity 切换到 ThirdActivity 时,来自 FirstActivity 的额外内容将被销毁。此问题的替代方法是您可以将这些额外内容存储在共享首选项中。使用共享首选项会将您的数据保存到本地存储,并且在每次 Activity 中都可用。 可以找到共享首选项的指南 here

关于java - getExtras() 在向后导航时返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37895881/

相关文章:

android - 如何将触摸事件从 subview 传递给父 View ?

java - 需要 Android/PC GIS 库

java - 哲学家就餐算法僵局

java - pom.xml 中的错误

android - Android 有验证密码的功能吗?

android - 相当于Android中的plist

java - pdfbox 自动换行

java - 如何以编程方式从 log4j2 中删除 ConsoleLogger?

java - 在 java 中取消转义 url

android - 从文件加载时格式错误的 Json