我有几个活动链接在一起。有:Activity_1 -> Activity_2 -> Activity_3
其中活动1是活动2的父级,活动2是活动3的父级。清单如下:
<activity android:name=".Activity_1"
...>
<activity android:name=".Activity_2">
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value=".activities.Activity_1" />
</activity>
<activity android:name=".Activity_3">
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value=".activities.Activity_2" />
</activity>
在Activity_1
适配器中的我通过onclick监听器(通过适配器)向Activity_2
发送一些数据:
view.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(v.getContext(), Activity_2.class);
intent.putExtra("title",title.getText());
v.getContext().startActivity(intent);
}
});
并在Activity_2
中检索该数据:
....
private String title;
....
@Override
protected void onCreate(Bundle savedInstanceState) {
Bundle extras = getIntent().getExtras();
if (extras != null) {
title = extras.getString("title");
}
...
// some important usage of title here
我有另一个onclick监听器,从活动2到活动3,当我点击后退按钮时,应用程序崩溃,因为标题返回null
。
我不想使用偏好来存储标题,任何想法如何避免这个?
答案 0 :(得分:0)
在onResume
期间,从Activity1调用 - &gt;似乎是从意图中获取信息。 Activity2以及从Activity3返回的方式 - &gt;活性2。
您可能需要考虑在onCreate
期间这样做。
这有意义吗?
编辑:所以......我刚刚学会了导航(&#34;&lt; - &#34;在操作栏上)与导航返回(硬按钮)不同。 您可以使用不同的方法解决此问题:
答案 1 :(得分:0)
您应该获得View
上下文,而不是从Activity
获取上下文。尝试代替:
Intent intent = new Intent(v.getContext(), Activity_2.class);
intent.putExtra("title",title.getText());
v.getContext().startActivity(intent);
的是:
Intent intent = new Intent(this, Activity_2.class);
intent.putExtra("title",title.getText());
this.startActivity(intent);
实际上,当您参与某项活动时,您也可以startActivity(intent);