如何在完成第2次活动后调用第1次活动中的onCreate方法(由第1次活动调用)

时间:2012-09-26 05:55:17

标签: android

我是android的初学者。我有一个简单的代码,我在第一个活动中调用一个活动,在第二个活动中,我有一个按钮,第二个活动完成,第一个活动出现。有没有办法在第一个活动中调用 onCreate 方法,因为在第一个活动中永远不会调用onCreate方法(总是调用onResume)?我是否在清单文件中编辑了一些内容。

以下是我的代码

 public class Activity1 extends Activity {
  /** Called when the activity is first created. */

 TextView mTextView ;

 Button b1;
 static int count=0;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);



    mTextView = (TextView) findViewById(R.id.textView2);

    if (savedInstanceState == null) {
        mTextView.setText("Welcome to HelloAndroid!");
    } else {
        mTextView.setText("Welcome Back!");
        System.out.println("count------>"+ count);
    }



    final Intent i = new Intent(this,activity2.class);
    b1 = (Button) findViewById(R.id.button1);
    b1.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {

            startActivity(i);

        }
    });

}


@Override
public void onResume() 
{
    super.onResume();
    System.out.println("inside Resume");
 }

@Override
public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);

    // Checks the orientation of the screen
    if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
        Toast.makeText(this, "landscape", Toast.LENGTH_SHORT).show();
    } else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT){
        Toast.makeText(this, "portrait", Toast.LENGTH_SHORT).show();
    }
}
    @Override
    public void onSaveInstanceState(Bundle savedInstanceState) {
      super.onSaveInstanceState(savedInstanceState);

      savedInstanceState.putBoolean("MyBoolean", true);
      savedInstanceState.putDouble("myDouble", 1.9);
      savedInstanceState.putInt("MyInt", 1);
      savedInstanceState.putString("MyString", "Welcome back to Android");
      count++;
    }


    @Override
    public void onRestoreInstanceState(Bundle savedInstanceState) {
      super.onRestoreInstanceState(savedInstanceState);

      boolean myBoolean = savedInstanceState.getBoolean("MyBoolean");
      double myDouble = savedInstanceState.getDouble("myDouble");

      System.out.println("MyBoolean"+ myBoolean);
      System.out.println("myDouble"+ myDouble);
    }


}

这是我的第二个活动,由第一个活动

调用
public class activity2 extends Activity{

TextView textview;
Button b1;
 public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main2);

        textview = (TextView) findViewById(R.id.textView1);

        textview.setText("in activity2");

        b1 = (Button) findViewById(R.id.button1);

        b1.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {

                finish();
            }
        });
 }
}

有人请帮助我 谢谢!

3 个答案:

答案 0 :(得分:1)

在第一个Activity中,在finish()之后调用startActivity(i);,在第二个Activity中,在调用finish()之前启动第一个Activity。当你启动一个没有实例的Activity时,它是{{1}将被调用。

修改

如果要保存第一个Activity的状态,可以创建一个包并向其添加视图状态。然后将此包添加为intent以启动第二个Activity.In第二个Activity从intent和when获取此额外内容你想首先通过intent启动Activity(例如startFirstActivity intent)将该bundle添加到此intent(startFirstActivity intent)。现在在第一个Activity的onCreate方法中,从intent获取bundle(通过onCreate)并且如果它不为null,则从中提取视图的状态,并在按ID查找后设置视图状态。

答案 1 :(得分:0)

只需使用finish();在活动1中的startActivity(i)之前

答案 2 :(得分:0)

activity2

之后finish()移至Activity1中的Activity statActivity();之前,请在第二个b1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent i = new Intent(Activity2.this ,Activity1.class); startActivity(i); } }); 按钮点击中使用此代码
{{1}}