1

私はアンドロイドの初心者です。私は最初のアクティビティから 1 つのアクティビティを呼び出している単純なコードを持っています。その 2 番目のアクティビティには、2 番目のアクティビティが終了し、1 番目のアクティビティが表示されるボタンがあります。最初のアクティビティで onCreate メソッドが呼び出されることはない (onResume は常に呼び出される) ため、最初のアクティビティでonCreateメソッドを呼び出す方法はありますか? マニフェスト ファイルで何かを編集する必要がありますか。

以下は私のコードです

 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);
    }


}

そして、これが私の2番目のアクティビティで、1番目のアクティビティによって呼び出されます

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

誰か助けてくださいありがとう!

4

3 に答える 3

1

最初のアクティビティでは、finish()後に呼び出しstartActivity(i);、2 番目のアクティビティでは、呼び出す前に最初のアクティビティを開始します。finish()インスタンスを持たないアクティビティを開始すると、それonCreateが呼び出されます。

編集:

最初のアクティビティの状態を保存したい場合は、バンドルを作成し、ビューの状態をそれに追加できます。次に、このバンドルをエクストラとして、2 番目のアクティビティを開始するインテントに追加します。2 番目のアクティビティでは、インテントからこのエクストラを必要なときに取得しますインテントを介して最初のアクティビティを開始します(たとえば、startFirstActivity インテント)、そのバンドルをこのインテントに追加します(startFirstActivity インテント)。onCreate最初のアクティビティのメソッドで、インテントからバンドルを取得し(経由でgetIntent().getextras())、null でない場合は、そこからビューの状態を抽出しますIDでそれらを見つけた後、ビューの状態を設定します。

于 2012-09-26T06:00:11.380 に答える
0

finish();を使用するだけです。アクティビティ1のstartActivity(i)の前

于 2012-09-26T06:00:50.217 に答える
0

後にActivity2呼び出しにactivity2移動する前に、2番目のボタンクリックでこのコードを使用しますfinish()Activity1statActivity();

b1.setOnClickListener(new View.OnClickListener() {

   @Override
   public void onClick(View v) {

      Intent i = new Intent(Activity2.this ,Activity1.class);
      startActivity(i);
   }
});
于 2012-09-26T06:02:14.177 に答える