2

A と B の 2 つのアクティビティがあります。

A から B へ:

onCreate

Context context = this;

オンクリック

Intent i = new Intent(context,B.class);
startActivity(i);

B から A へ: (B に A に戻るボタンがある場合)

button.setOnClickListener(new View.OnClickListener(){
   public void onClick(View v){
      finish();
   }
});

しかし、フローが次のような場合:

A が B を呼び出し、B を監視しているユーザーが [ホーム] ボタンをクリックして、起動したアクティビティから B をもう一度クリックし、ボタンをクリックして Finish() を呼び出すと、最初のアクティビティ A ではなく [ホーム] に移動します。

編集:

フロー

  1. A->B // startActivity(Intent) を使用;
  2. B->Home // デバイスのホームボタンをクリック
  3. ホーム->B // 起動されたアクティビティからアプリをクリック
  4. B.finish() -> Home であり、A ではありません // finish または onBackPressed は同じことを行います
4

5 に答える 5

1

あなたはこれを試すことができます:-

getApplicationContext()またはの代わりに、なぜあなたは使用しているのですthisActivity A name.

A -> B

 Intent i = new Intent(yourcurrentActivity,B.class);
 startActivty(i);

B -> A

電話finish()

これを使用している場合は更新してください:-削除してください

android:noHistory="true";
于 2013-03-29T10:02:36.697 に答える
0

以下のコードを確認してください:私は3つのアクティビティを持っています:MainActivity、A_Acvitiy、B_actiivty(あなたの要件に従ってうまくいくことを願っています..)

package com.example.androidtest;

import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.Menu;
import android.view.View;

public class MainActivity extends Activity {

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

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }

    public void callActivity(View v) {
        if (v.getId() == R.id.button1) {
            // A
            startActivity(new Intent(MainActivity.this, A_activity.class));
        }

        if (v.getId() == R.id.button2) {
            // B
            startActivity(new Intent(MainActivity.this, B_activity.class));
            if (GeneraClass.isFormB) {
                            GeneraClass.isFormB = false;
                finish();
            }
        }
    }
}

A_アクティビティ:

package com.example.androidtest;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;

public class A_activity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.a_layout);
    }

    public void callActivity(View v) {
        if (v.getId() == R.id.button1) {
            // B
            startActivity(new Intent(A_activity.this, B_activity.class));
                 finish();
        }

    }

}

b_アクティビティ:

package com.example.androidtest;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;

public class B_activity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);

        setContentView(R.layout.b_layout);
    }

    public void callActivity(View v) {
        if (v.getId() == R.id.home) {
            // home
            GeneraClass.isFormB = true;
            startActivity(new Intent(B_activity.this, MainActivity.class));
            finish();
        }

    }
}

私の余分なクラス:

package com.example.androidtest;

public class GeneraClass {

    public static boolean isFormB = false;
}

そう、Home-->A(finish)-->B--->Home(if from b then finish)-->B-->Back--> Home --->Back--> exit App

于 2013-03-29T10:33:27.957 に答える
0

電話

onBackPressed();

それ以外の

finish();
于 2013-03-29T10:03:53.830 に答える
0

これを試して:

startActivity(new Intent(B.this,B.class));

そしてアクティビティAのfinish()

// in your activity A
Intent i = new Intent(getApplicationContext(),B.class);
startActivity(i);
finish();

public void OnBackPressed()
{
finish();
}
于 2013-03-29T10:04:06.463 に答える
0

これを試して:

public void startActivityForResult (Intent intent, int requestCode)
于 2013-03-29T10:04:44.230 に答える