2017-09-18 88 views
0

我有一項活動是從我的主要活動中打開的。當它使用後退按鈕關閉然後重新啓動時,它將使用先前的實例狀態打開,而不是像新建一樣打開。如何防止以前的InstanceState數據重新啓動活動

主要活動

\t public void onPerformButtonClick(View view) 
 
\t { 
 
    \t Intent performActivity = new Intent(getBaseContext(), PerformActivity.class); 
 

 
    \t //start lyric activity 
 
     startActivityForResult(performActivity, MAIN_PERFORM_MODE); \t \t 
 
\t \t 
 
\t }

的PerformActivity

\t @Override 
 
\t protected void onCreate(Bundle savedInstanceState) { 
 
\t \t super.onCreate(savedInstanceState); 
 

 
     setContentView(R.layout.perform_main); 
 

 
\t \t //reload state on orientation change or wake up 
 
\t \t if (savedInstanceState != null) { 
 

 
\t \t \t if (mPlayList == null) { 
 
\t \t \t \t mPlayList = new PlayList(getBaseContext()); 
 
\t \t \t } 
 
\t \t \t mPlayList.removePlayListListener(); 
 
\t \t \t mPlayList.setPlayListListener(new PlayListListener() { 
 
\t \t \t \t @Override 
 
\t \t \t \t public void onPlayListDataUpdate() { 
 
\t \t \t \t \t updateSetListData(); 
 
\t \t \t \t } 
 
\t \t \t }); 
 
\t \t \t mPlayList.loadState(savedInstanceState.getBundle("playlist")); 
 

 
\t \t \t if (mTimeLine == null) { 
 
\t \t \t \t mTimeLine = new TimeLine(); 
 
\t \t \t } 
 
\t \t \t mTimeLine.removeTimeLineListener(); 
 
\t \t \t mTimeLine.loadState(savedInstanceState.getBundle("timeline")); 
 
\t \t } 
 

 
    ..... 
 

 
\t } 
 

 
\t @Override 
 
\t protected void onSaveInstanceState (Bundle outState) { 
 

 
\t \t super.onSaveInstanceState(outState); 
 

 
\t \t Bundle playlist = mPlayList.saveState(); 
 
\t \t outState.putBundle("playlist", playlist); 
 

 
\t \t Bundle timeline = mTimeLine.saveState(); 
 
\t \t outState.putBundle("timeline", timeline); 
 

 
\t } 
 

 
\t private void doFinish() 
 
\t { 
 
\t \t finish(); 
 
\t }

我相信這是一些簡單的我我錯過了。

總結: 我希望應用在屏幕方向更改方面表現良好,但當用戶按下後退按鈕時,我希望先前的狀態消失。

+0

你想重新用新鮮的數據 –

+0

每次我按下運行的按鈕活動onPerformButtonClick我想performActivity的新新實例來運行。沒有任何以前的instanceState數據加載 – Dan

+0

是否有可能用於創建performActivity每次沒有以前的實例狀態意向標誌? – Dan

回答

0

將此代碼添加到PerformActivity中。這將完成按下後退按鈕上的活動。

@Override 
public void onBackPressed() { 
    if(null!=this){ 
     finish(); 
    } 
    super.onBackPressed(); 
} 
+0

對不起,但這沒有奏效。是活動已完成,但當主活動中的onPerformButtonClick再次被按下時,performActivity會再次啓動,它會使用其先前的實例狀態加載而不是加載新鮮 – Dan

+0

問題是由於靜態變量未被清零。從技術上講,你的回答對我發佈的問題是正確的。 – Dan

+0

ohh我在你的代碼中看到任何靜態變量mPlayList。任何方式都很高興聽到它幫助你。 – Anonymous

相關問題