我正在尝试使用意图的额外内容在我的应用程序内部传递一些数据.
我将数据附加到意图,如下所示:
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.
为什么我的演员会丢失?我需要更改什么来检索我对意图的附加内容?
编辑
>纠正了代码中的拼写错误
>添加了完整的onCreate方法声明
>这是清单中的ActivityTo声明:
<activity
android:name=".ActivityTo"
android:launchMode="singleTask"
android:screenOrientation="portrait">
</activity>
最佳答案 问题是接收任务的android:launchMode =“singleTask”属性.设置此项后,所有以ActivityTo活动为目标的意图都将由同一对象接收.如果已经创建了活动,则通过活动的onNewIntent(Intent)方法发送intent.像这样覆盖它:
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
setIntent(intent);
}
这样,您可以使用getIntent()获取新的意图.