基本上,我从父(ExplorerActivity)示例调用一个新的活动(MainActivity),并混合了伪代码.
public class MainActivity extends Activity {
boolean isLoggedin=false;
onCreate(){
Print(isLoggedin)
isLoggedin=true;
}
public boolean onOptionsItemSelected(MenuItem item) {
Intent i = new Intent(MainActivity.this, ExplorerActivity.class);
startActivityForResult(i, 0);
return true;
}
protected void onActivityResult(int requestCode, int resultCode, Intent data){
super.onActivityResult(requestCode, resultCode, data);
Log.e("Teste", "Mainactivty: onActivityResult was called!!");
xTaskThread = new xTaskThread();
xTaskThread.start();
}
------------ ExplorerActivity -----
public class ExplorerActivity extends ListActivity {
Intent i = getIntent();
i.putExtra("fileURL", file.getAbsolutePath());
setResult(RESULT_OK, i);
finish();
Manifest:
<activity
android:name="com.geoclient.misc.ExplorerActivity"
android:label="@string/app_name"
android:screenOrientation="landscape">
</activity>
-------------------------------------1. ExplorerActivity, finish activity... (finish())
2. OnCreated called, printed('isLoggedin=FALSE') <--- (I expected TRUE) Shouldn't keep state on variable?? (Same as restart of application...)
3. onActivityResult called, printed('Mainactivty: onActivityResult was called!!')
看起来应用程序是重新启动的..。我不明白..。我希望回到onResume(),并且变量处于相同的状态。请让我知道我哪里错了!(我在Mainactivity中与googlemap合作,不确定这是否相关。)非常感谢!
发布于 2013-10-31 01:04:09
您还没有完全理解活动生命周期。一个活动可以在任何时候被扼杀,它不是在前台,也可以是在某些事情发生变化时(比如方向)。
如果您有要保存状态的数据,如实例变量,请在onSaveInstanceState中这样做。这就是它的目的。
发布于 2013-10-31 01:07:12
查看您在那里编写的清单行,ExplorerActivity似乎被迫进行了landscape定向。
因此,当您进入其中时,如果没有在onSaveInstanceState() - onRestoreInstanceState()中保存/恢复,后台堆栈中的每个活动都将失去状态。
https://stackoverflow.com/questions/19696539
复制相似问题