2016-07-16 40 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