在处理多个活动时使用意图数据

时间:2016-11-15 21:01:46

标签: android android-intent

我有几个活动链接在一起。有: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

我不想使用偏好来存储标题,任何想法如何避免这个?

2 个答案:

答案 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);