0

下部に4つのボタンがあります。A、B、C、Dと仮定します。これらのボタンはウィジェットとして作成し、すべてのレイアウトに含めています。ボタンをクリックするたびに、Commonクラスで実装した1つのアクティビティを開きます。アプリケーションが起動すると、Aは選択された状態になり、AIの下でいくつかのアクティビティA1、A2、A3が開始されます。Bを押すと、Bが選択状態になり、B1アクティビティが開始されます。B1を開始するときにCLEAR_TOPフラグを設定していますが、Aで開始したアクティビティがクリアされていません。もう一度Aボタンをクリックすると、A1アクティビティが開始され、A2やA3(以前に開始された)などのすべてのアクティビティがクリアされます。しかし、B1、B2はクリアされていません。なぜそれが起こっているのか。

public class TabBar implements OnClickListener{

private Context fContext;
//private Activity fActivity;
private Button btnHome, btnReward, btnProfile, btnFav;



private Activity activity;

//private Button venues,orders,about;

public TabBar(Activity activity, Context context) {
    this.activity = activity;
    btnHome = (Button)activity.findViewById(R.id.btn_tab_home);
    btnReward = (Button)activity.findViewById(R.id.btn_tab_rew);
    btnProfile = (Button)activity.findViewById(R.id.btn_tab_profile);
    btnFav = (Button)activity.findViewById(R.id.btn_tab_fav);
    btnHome.setOnClickListener(this);
    btnReward.setOnClickListener(this);
    btnProfile.setOnClickListener(this);
    btnFav.setOnClickListener(this);





}

@Override
public void onClick(View v) {
    int id = v.getId();
    switch (id) {
    case R.id.btn_tab_home:


            Intent int1 = new Intent(activity, HomeActivity.class);
            int1.setFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
            int1.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP|Intent.FLAG_ACTIVITY_SINGLE_TOP);
            activity.startActivity(int1);
            activity.finish();
            activity.overridePendingTransition(0, 0);

        break;

    case R.id.btn_tab_rew:


            Intent int2 = new Intent(activity, Rewards.class);
            int2.setFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
            int2.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP|Intent.FLAG_ACTIVITY_SINGLE_TOP);
            activity.startActivity(int2);
            activity.finish();


        break;

    case R.id.btn_tab_profile:


            Intent int3 = new Intent(activity, ProfileActivity.class);
            int3.setFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
            int3.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP|Intent.FLAG_ACTIVITY_SINGLE_TOP);
            activity.startActivity(int3);
            activity.finish();


        break;


    case R.id.btn_tab_fav:


            Intent int4 = new Intent(activity, FavouritesActivity.class);
            int4.setFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
            int4.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP|Intent.FLAG_ACTIVITY_SINGLE_TOP);
            activity.startActivity(int4);
            activity.finish();


        break;

    default:
        break;
    }
}
4

1 に答える 1

0

[トップスタックをクリア]は、アクティビティスタックに存在する場合、アクティビティスタックから一部のアクティビティのトップのすべてのアクティビティをクリアすることに注意してください。アクティビティスタックに存在しない場合は、新しいアクティビティB1をアクティビティスタックにプッシュします。

あなたの場合、アクティビティB1はアクティビティスタックに存在しないため、アクティビティスタックからアクティビティをポップすることはなく、新しいアクティビティB1をアクティビティスタックにプッシュするだけです。

TabBarを実装する場合は、目的に応じてTabFragmentまたはTabActivityを使用する必要があります。

于 2012-11-07T13:03:59.680 に答える