2017-09-18 11 views
0

私は主なアクティビティから開いたアクティビティを持っています。戻るボタンを使用して閉じてから再起動すると、新しいものとして開くのではなく、前のinstancestateを使用して開きます。以前の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

新鮮なデータを私は実行するためにperformActivityの新しい新鮮なインスタンスをしたいと思いますonPerformButtonClickに実行ボタンを押すたびにその活動を再開したいです。前のinstanceStateデータロードがない場合 – Dan

+0

前回のinstancestateなしにperformActivityを作成するために使用できるIntent FLAGがありますか? – Dan

答えて

0

このコードをPerformActivityに追加します。これは、戻るボタンを押したときのアクティビティを終了します。

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

申し訳ありませんが、これは動作しませんでした。はい、アクティビティは終了しましたが、メインアクティビティのonPerformButtonClickが再び押され、performActivityが再び開始されたときには、新しく読み込まれるのではなく、前回のインスタンスでロードされます。 – Dan

+0

この問題は、静的変数がゼロにならないためでした。技術的には、あなたの答えは私が投稿した質問に対して正しいものでした。 – Dan

+0

オハイオ州あなたのコードに静的変数mPlayListが表示されていません。 – Anonymous

関連する問題