簡體   English   中英

通過兩項活動維護活動狀態

[英]Maintain Activity State with two Activities

我們有一個Android App和一個包含兩個活動的MainActivity和PageTwo。 在MainActivity中,我們將EditText小部件設置為僅接受數字輸入,還具有一個通過Intent轉到下一個活動的Button。 在第二個活動PageTwo上,我們有一個Button,可以通過一個Intent將用戶返回到MainActivity。 當我們在EditText字段中輸入一個值並進行從MainActivity到PageTwo活動並返回的旅程時,除非您使用設備(仿真器)后退按鈕,否則似乎清除了該值。 我正在嘗試維護此EditText變量的活動狀態

代碼段

 EditText ETage;
 int vAGE;
 static final String V_AGE = "vAGE"; //KeyValue Pair

@Override
public void onSaveInstanceState(Bundle outState){
    outState.putInt(V_AGE,vAGE);
    super.onSaveInstanceState(outState);
}

//@Override
public void onRestoreInstanceState(Bundle savedInstanceState){
    super.onRestoreInstanceState(savedInstanceState);
    vAGE = savedInstanceState.getInt(V_AGE);
    ETage.setText(String.valueOf(vAGE));
}

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    //if(savedInstanceState != null){
        //vAGE = savedInstanceState.getChar(V_AGE);
    //}
    setContentView(R.layout.activity_main);

  ETage = (EditText)findViewById(R.id.editTextAge); 

如果您想返回上一個活動,為什么要調用意圖? 只需簡單地寫onBackPressed(); 內部onClick

btn.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        onBackPressed();
    }
});

或者,如果您真的想使用意圖,則可以始終使用finish()

btn.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {

        Intent i = new Intent(PageTwo.this, MainActivity.class);            
        startActivity(i);
        finish();
    }
});

PageTwo第二個活動不會故意返回MainActivity 只需在按鈕單擊中執行以下操作:

super.onBackPressed(); // this instead of intent to start MainActivity

據我對您提出的問題的理解,您可以在第二頁中執行以下操作:

@Override
public void onBackPressed() {
    super.onBackPressed();

Intent intent = new   Intent(SecondActivity.this,MainActivity.class);
        startActivity(intent);

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM