我底部有4个按钮。假设A,B,C,D。我创建的这些按钮是一个小部件,包含在每个布局中。在每个按钮上单击我打开一个我在Common类中实现的活动。当我的应用程序启动时A将处于选中状态,在A下我正在启动一些活动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;
}
}
答案 0 :(得分:0)
注意,清除顶部堆栈将清除活动堆栈中某些活动顶部的所有活动(如果它存在于活动堆栈中)。如果它不存在于活动堆栈中,那么它将在活动堆栈上推送新活动B1。
在您的情况下,活动堆栈中不存在活动B1,因此它不会从活动堆栈中弹出任何活动,只会在活动堆栈上推送新的活动B1。
如果您想实施TabBar,那么您应该使用TabFragment或TabActivity来实现此目的。