2016-11-15 60 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

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

相關問題