2016-11-15 72 views
0

我有几个活动链接在一起。有:Activity_1 -> Activity_2 -> Activity_3其中活性1是活动2和活动2的父是活动3.该清单的父是如下:处理几个活动时处理意图数据

Activity_1适配器
<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> 

我经由的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 

我有另一个O从活动2到活动3的nclick监听器,当我点击后退按钮时,应用程序崩溃,因为标题返回null

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

回答

0

看起来你正在从目标中提取信息onResume,这是从Activity1-> Activity2调用的,也是从Activity3-> Activity2的方式。

您可能需要考虑在onCreate期间这样做。 这有道理吗?

编辑:所以...我刚刚了解到,导航上(“<-”在操作栏上)是不同于导航回(硬按钮)。 您可以使用不同的方法解决这个问题:

+0

感谢您的评论,但在'的onCreate我正在缩进数据' –

+0

刚刚更新了我的发现 –

+0

的答案谢谢,第二种方法解决了问题 –

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

+0

意图在我的适配器中调用,而不是活动,我更新了问题 –

+0

你的问题目前还不清楚 – safari

+0

哪一部分不清楚?如有必要,我可以修改问题 –

相关问题