I am having 4 buttons at the bottom. Suppose A,B,C,D. These buttons I have created as a widget and including in every layouts. ON each button click I am opening one activity which I have implemented in Common class. When my application starts A will be on selected state, under A I am starting some activities A1, A2, A3. When I press B, B will be in selected state and B1 activity will be started. I am setting CLEAR_TOP flag when I start B1, but the activities I started under A is not clearing. When I click A button again A1 activity will be started and all the activities like A2 and A3(previously started) will be cleared. But B1, B2 are not getting cleared. why it is happening.
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;
}
}
Note, Clear top stack, will clear all the activities of top of some activity from activity stack, if it is present in activity stack. If it is not present in activity stack, then it will push new activity B1 on activity stack.
In your case, Activity B1 is not present in activity stack, so it wont pop any activity from activity stack and will just push a new activity B1 on activity stack.
If you want to Implement TabBar, then you should use TabFragment or TabActivity for the purpose.