我有兩個活動A,B。現在,從A按下按鈕(使用startActivity()
)呼叫B,然後按返回鍵返回到A.現在當我再次按下按鈕去B時,新的活動被調用(如預期的那樣)。保存活動狀態
現在有人能告訴我如何顯示以前的B狀態嗎?
我看了這篇文章 Saving Android Activity state using Save Instance State,但忍不住:(
public class B extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main1);
if(savedInstanceState!=null){
EditText editText=(EditText)findViewById(R.id.editText1);
editText.setText(savedInstanceState.getString("EditBox"));
}
}
@Override
protected void onSaveInstanceState(Bundle onSaveInstanceState) {
System.out.println("B.onSaveInstanceState()");
super.onSaveInstanceState(onSaveInstanceState);
onSaveInstanceState.putString("EditBox","Hello");
}
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
System.out.println("B.onRestoreInstanceState()");
super.onRestoreInstanceState(savedInstanceState);
EditText editText=(EditText)findViewById(R.id.editText1);
editText.setText(savedInstanceState.getString("EditBox"));
}}
我班
public class A extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button button=(Button)findViewById(R.id.button1);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i=new Intent(StartActivityforresultActivity.this,B.class);
startActivity(i);
}
});
}
謝謝,你的解決方案是完美的(我試過選項2)。但我不想重寫onBackPressed,因爲我不知道哪個活動調用了當前活動回去我使用活動堆棧。爲了更清楚我有A,B,C,D活動,現在A調用B,C(取決於某些條件),然後調用D。我希望你得到它:) –
你能給我一些關於事件流的更多信息。 活動A去B,如果你回來,它應該去A. 活動B去C,如果你回擊它應該去B,然後A. 等? – Chris
屏幕流A> B> D(A去B和B去D),A> C> D。現在,當我在D我不知道哪項活動稱爲此活動。所以我正在尋找一些通用的解決方案。 (儘管我可以在意圖中使用一些參數,但我正在尋找一些通用的解決方案) –