Android Intent 额外数据丢失

标签 android android-intent

我正在尝试使用 Intent 的附加功能在我的应用程序中传递一些数据。

我像这样将数据附加到 Intent :

Intent i = new Intent(ActivityFrom.this, ActivityTo.class);
i.putExtra(CONST_KEY, true);
startActivity(i);

public static final String CONST_KEY = "MyBooleanValue";

我正在尝试在启动的 ActivityTo 的 onCreate 方法中检索数据,如下所示:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    Bundle extra = getIntent().getExtras();
    if ( extra != null ) {
        boolean b = extra.getBoolean(ActivityFrom.CONST_KEY);
    }
}

但是,我从未遇到过 if block ,因为 Bundle 始终为 null

为什么我的 extras 丢失了?我需要更改什么才能检索我为 Intent 添加的额外内容?

编辑

  • 更正了代码中的拼写错误
  • 添加了完整的onCreate 方法声明
  • 这是 ActivityTo 在 list 中的声明:

    <activity
        android:name=".ActivityTo"
        android:launchMode="singleTask"
        android:screenOrientation="portrait">
    </activity>
    

最佳答案

问题出在接收任务的android:launchMode="singleTask"属性上。设置此设置后,所有以 ActivityTo Activity 为目标的 Intent 都将由同一对象接收。如果 Activity 已创建,则通过 Activity 的 onNewIntent(Intent) 方法发送 Intent 。像这样覆盖它:

protected void onNewIntent(Intent intent) {
    super.onNewIntent(intent);
    setIntent(intent);
}

这样,您可以使用 getIntent() 获取新的 Intent 。

关于Android Intent 额外数据丢失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33994021/

相关文章:

android - 使用现有证书为 React Native Android 应用程序生成签名的 apk

android - 如何在 ImageViews (parse.com) 中加载多个图像

javascript - Phonegap 3.7.0 手电筒插件不起作用

android - 通过 Intent 共享应用程序之前重命名文件名

android - com.android.vending.billing.PURCHASES_UPDATED 什么时候广播?

java - 如何找到 libgdx 中两个对象之间的距离

android - 同时将一个动画应用于多个 View

Android通知点击开始 Activity

Android:传递没有序列化的对象

Android如何关闭一个 Intent ?