簡體   English   中英

完成第二個活動(由第一個活動調用)后如何在第一個活動中調用onCreate方法

[英]How to call onCreate method in 1st activity after finishing 2nd activity(which is called by the 1st activity)

我是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();
            }
        });
 }
}

有人請幫助我,謝謝!

在第一個活動中,在startActivity(i);之后調用finish() startActivity(i); 在第二個Activity中,在調用finish()之前啟動第一個Activity。當您啟動一個沒有實例的Activity時,它將調用onCreate

編輯:

如果要保存第一個Activity的狀態,則可以創建一個包並向其中添加視圖的狀態。然后將該包作為額外的內容添加到啟動第二個Activity的intent中。通過intent啟動第一個Activity(例如startFirstActivity intent)將該包添加到該intent(startFirstActivity intent)中。現在在第一個Activity的onCreate方法中,從intent中獲取包(通過getIntent().getextras() ),如果不為null ,從中提取視圖狀態,並在通過ID找到它們后設置視圖狀態。

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

在第二個activity2按鈕單擊中使用此代碼,然后移到Activity2,然后在statActivity();之后在Activity1調用finish() statActivity();

b1.setOnClickListener(new View.OnClickListener() {

   @Override
   public void onClick(View v) {

      Intent i = new Intent(Activity2.this ,Activity1.class);
      startActivity(i);
   }
});

暫無
暫無

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

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