0

我在底部有 4 个按钮。假设 A、B、C、D。这些按钮是我作为小部件创建的,并包含在每个布局中。在每个按钮单击上,我打开一个我在 Common 类中实现的活动。当我的应用程序启动时,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 回答