2016-07-16 56 views
0

我試圖在兩個活動之間切換。 在活動1中,我將Button命名爲GoToSecond以啓動第二個活動。 以同樣的方式,在活動2中,將Button命名爲GoToFirst以啓動第一個活動。onRestoreInstance在活動之間切換時未被調用

我在第一個活動中使用了日誌消息。

訂單I m是點擊GoToSecond按鈕時得到的是 的onCreate

在onStart

的onResume

onSaveInstance

的onStop

並切換到第二活性。 現在,在第二個活動當我點擊按鈕GoToFirst,第一個活動打開,在第一個活動 日誌順序

的onCreate

在onStart

的onResume ..

爲什麼onRestoreInstance沒有得到在onStart之後調用? 即使實例存儲?

Can anyne help me?

這裏是第一活動的代碼:

public class MainActivity extends AppCompatActivity { 
EditText hello; 
Button b1; 
public static String TAG="Prajwal"; 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    hello=(EditText) findViewById(R.id.hello); 
    Log.d(TAG,"OnCreate counter 1"); 
    b1=(Button) findViewById(R.id.b1); 
b1.setOnClickListener(new View.OnClickListener() { 
@Override 
public void onClick(View v) { 
    Intent i=new Intent(MainActivity.this,Main2Activity.class); 
    startActivity(i); 
} 
}); 

我還沒有在代碼加入日誌消息。

和第2活動代碼是

public class Main2Activity extends AppCompatActivity { 
Button b2; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main2); 
    b2=(Button) findViewById(R.id.b2); 
    b2.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Intent i=new Intent(Main2Activity.this,MainActivity.class); 
       startActivity(i); 
     } 
    }); 
    Log.d(MainActivity.TAG,"Oncreate 2"); 

} 

例如 如果I HV在第一活動一個EditText,如果我在它甲肝一些文字,我米丟失該文本而第二活動之間進行切換以第一活動。 bcoz onCreate在第一個活動中被調用。 但是,當我切換到橫向模式onRestoreInstance被調用,我沒有丟失任何文本。

+0

郵政代碼的第請'活動'。 – earthw0rmjim

回答

0

據我所知,onRestoreInstance只會在您的活動被破壞並重新創建時纔會被調用。所以在這種情況下你的會恢復以前的狀態被銷燬的活動。

但是在你的情況下,活動並沒有被破壞,它只是被系統阻止,所以它不會失去它的狀態,所以不需要恢復它。

請參閱以下鏈接瞭解詳情:FIRSTSECOND

編輯

既然你提供你的活動代碼,因爲我看到,您可以從第二個活動不是第一個活動,但第三個活動開啓與第一個活動的類型。 因此,按第二個Activity中的按鈕之後,您的堆棧跟蹤將爲:

MainActivity - > Main2Activity - > MainActivity。

所以,你有兩個簡單的解決方案: 1)替代

Intent i=new Intent(Main2Activity.this,MainActivity.class); 
startActivity(i); 

只要寫finish();

2)標誌FLAG_ACTIVITY_CLEAR_TOP到意圖從Main2Activity添加到MainActivity

+0

哦。但是,如果我在第一個活動中使用EditText,並且如果其中包含一些文本,我將在第二個活動到第一個活動之間切換時丟失該文本。 bcoz onCreate被稱爲 – Prajwal

+0

@Prajwal您能否提供您的活動代碼? –

+0

現在肯定我已加入 – Prajwal