Android. Comment changer d'Activité à l'intérieur d'un Onglet
Situation suivante:
J'ai TabActivity avec, par exemple, trois onglets, TabA, TabB, TabC.
Il y a un bouton dans l'activité (Act_C_1) de TabC. Donc, si l'utilisateur clique sur ce bouton, une autre activité (Act_C_2) devrait se produire dans TabC.
Je vous remercie d'avance pour toutes les suggestions /ou des idées.
Mur
UPD:
Voici mon code
TabActivity avec trois Activités:
public class TabScreen extends TabActivity
{
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.tab_menu);
TabHost tabHost = getTabHost(); //The activity TabHost
TabHost.TabSpec spec; //Resusable TabSpec for each tab
Intent intent; //Reusable Intent for each tab
intent = new Intent().setClass(this, SecondActivity.class);
//Initialize a TabSpec for each tab and add it to the TabHost
spec = tabHost.newTabSpec("tab_1").setIndicator("Tab1",null).setContent(intent);
tabHost.addTab(spec);
intent = new Intent().setClass(this, ThirdActivity.class);
//Initialize a TabSpec for each tab and add it to the TabHost
spec = tabHost.newTabSpec("tab_2").setIndicator("Tab2",null).setContent(intent);
tabHost.addTab(spec);
intent = new Intent().setClass(this, FourthActivity.class);
spec = tabHost.newTabSpec("tab_3").setIndicator("Tab3",null).setContent(intent);
tabHost.addTab(spec);
}
}
De l'activité "Act_C_1" ou FourthActivity.java:
public class FourthActivity extends Activity implements OnClickListener
{
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.fourth);
Button BtnWeiter = (Button)findViewById(R.id.BtnWeiter);
BtnWeiter.setOnClickListener(this);
}
@Override
public void onClick(View v)
{
//I also tried to use LocalActivityManager
//TabActivity parentTabActivity = (TabActivity) getParent();
//LocalActivityManager manager = parentTabActivity.getLocalActivityManager();
//manager.destroyActivity("tab_3", true);
//manager.startActivity("tab_3", new Intent(this, FourthActivity.class));
finish();
startActivity(new Intent(this, FourthActivity.class));
}
}
- Veuillez consulter ce lien : Android : Comment faire pour avoir de multiples activités dans un seul onglet de TabActivity
Vous devez vous connecter pour publier un commentaire.
Les Activités dans l'onglet peut être commuté de la manière suivante.
Laissez-nous d'abord de comprendre le flux:
Nous avons dans un Onglet d'accueil , de l'activité (par exemple, une liste) à partir de laquelle nous avons besoin pour passer à l'Activité suivante (dire les détails de l'élément cliqué) sous le même onglet. Pour cela, nous pouvons utiliser le concept de remplacement de l'activité.Également à mettre les drapeaux pour l'onglet sélectionné et les autres pour savoir que les détails sont présentés maintenant
Quand on appuie sur l'arrière on devrait obtenir de la précédente activité sous le même onglet.Pour cela, au lieu de nouveau en remplacement de l'activité, nous pouvons actualiser l'onglet tout en utilisant le pavillon particulier pour l'onglet sélectionné. Aussi, si le drapeau pour afficher les détails est vrai qu'on va aller dans le la liste dans le même onglet, sinon on va aller de l'activité avant le tabwidget (utilisation normale de onBackPressed)
Le code peut être comme suit..
(Cela peut être dans le onClickListener)
Lors de pressée est fait, nous remplacer sur BackPressed dans chaque de l'Activité en vertu de l'onglet pour accéder à la liste de nouveau à partir de l'écran de détails
La partie la plus importante ici est
Les constantes.LIST_ACTIVITY = 1; il indique l'onglet qui nous sommes. donc, les activités correspondantes aura sa valeur en tant que 0,1,2...etc
À nouveau de charger la liste correcte (l'Activité) lorsque l'onglet activité est actualisé que nous avons à l'inclure dans le TabWidget onCreate après la création des onglets
Suffit d'utiliser Intention.FLAG_ACTIVITY_CLEAR_TOP drapeau de remplacer une activité nécessaire onglet.
Il suffit d'ajouter ce pour tous les onglets:
Gérer l'événement onClick du bouton
finish() de l'activité
Ajouter startActivity méthode pour démarrer une autre activité.
Grâce