2017-09-18 56 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

相关问题