每次打开时更新MainActivity中的值

时间:2013-04-07 16:42:27

标签: android eclipse android-activity oncreate

每次打开MainActivity时,如何调用onCreate?

我想这样做: 我打开我的应用程序,这是我的MainActivity,然后我打开ActivityB并保存一些数据。当我关闭ActivityB时,我将回到MainActivity,但是我的MainActivity中的数据没有更新,因为没有调用onCreate。

这样解决它是否正确(这是有效的,但我知道这不是一个好方法):

转到ActivityB的按钮:

 public void ActivityB(View view){
    Intent intent = new Intent(this, ActivityB.class);
    startActivity(intent);
    finish();
}

返回MainActivity的按钮:

public void Back(View view){
    finish();
    Intent intent = new Intent(this, MainActivity.class);
    startActivity(intent);
}

3 个答案:

答案 0 :(得分:2)

你应该看看这个: http://developer.android.com/training/basics/activity-lifecycle/pausing.html

基本上,每个活动都有除“onCreate”以外的更多事件,比如“onResume”,在这种情况下应该在MainActivity回到前台时调用,你应该将代码放在那里。

答案 1 :(得分:0)

使用startActivityForResult

public void ActivityB(View view){
Intent intent = new Intent(this, ActivityB.class);
startActivityForResult(intent, 1);

}

然后在onActivityResult

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent intent)
{
    super.onActivityResult(requestCode, resultCode, intent);

    String sp = intent.getStringExtra("sp");
}  
活动B中的

@Override
public void onBackPressed()
{
    Intent i = new Intent();
    i.putExtra("sp", value); // the change value of sp
    setResult(RESULT_OK);
}

答案 2 :(得分:0)

假设您在主要活动A中有一个Textview,并且您正在使用

设置文本
Textview myTextview =(Textview)findViewbyId(R.id.textview1);
myTextView.setText("Android");

您正在从活动A导航到活动B.当活动B完成onResume()时,将调用活动A的方法。因此,请在onResume()

中更新textview,如下所示
onResume(){
myTextview.setText("Jelly Bean")};

因此,当您返回到屏幕时要更新的任何视图都会在该活动的onResume()方法上执行此操作。希望很清楚