Question
J'ai problème dans la vue de l'onglet. Je dois montrer beaucoup vue de l'onglet de navigation. Par exemple . Dans le premier onglet « Ventes », Il liste toutes les ventes route.If l'utilisateur clique sur une route, il faut aller liste des détaillants comme sage de son déplacement dans le premier onglet. Il y a beaucoup de pages (vues) disponibles.
De mon onglet, il montre que dans la première vue, cela signifie quand il charge l'onglet, il m'a montré la liste des itinéraires de vente avec vue sur l'onglet. Lorsque je clique sur la route de vente, il affiche des détaillants, mais semble pas vue onglet.
Ceci est mon code: tabview.xml
<?xml version="1.0" encoding="utf-8"?>
<TabHost android:layout_width="fill_parent"
android:layout_height="fill_parent" xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/tabhost">
<LinearLayout android:id="@+id/LinearLayout01"
android:orientation="vertical" android:layout_height="fill_parent"
android:layout_width="fill_parent">
<TabWidget android:id="@android:id/tabs"
android:layout_height="wrap_content" android:layout_width="fill_parent"></TabWidget>
<FrameLayout android:id="@android:id/tabcontent"
android:layout_height="fill_parent" android:layout_width="fill_parent"></FrameLayout>
</LinearLayout>
Ceci est mon MainActivity:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.tabview);
TabHost t = getTabHost();
TabHost tabHost = (TabHost)findViewById(android.R.id.tabhost);
TabSpec firstTabSpec = tabHost.newTabSpec("tid1");
TabSpec secondTabSpec = tabHost.newTabSpec("tid1");
TabSpec thirdTabSpec = tabHost.newTabSpec("tid1");
/** TabSpec setIndicator() is used to set name for the tab. */
/** TabSpec setContent() is used to set content for a particular tab. */
firstTabSpec.setIndicator("Sales").setContent(new Intent(this,SalesRouteActivity.class));
secondTabSpec.setIndicator("Admin").setContent(new Intent(this,SalesRoutesTab.class));
thirdTabSpec.setIndicator("Setting").setContent(new Intent(this,SalesRoutesTab.class));
/** Add tabSpec to the TabHost to display. */
tabHost.addTab(firstTabSpec);
tabHost.addTab(secondTabSpec);
tabHost.addTab(thirdTabSpec);
}
Ceci est mon SalesRouteActivity;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.sales_routes);
ArrayList<Object> routeList = getWmRoute();
ArrayList<String> routhPath = new ArrayList<String>();
for(int i = 0; i<routeList.size();i++){
routhPath.add(((WMRoute) routeList.get(i)).getDescription());
}
ArrayAdapter ad = new ArrayAdapter(this,android.R.layout.simple_list_item_single_choice,routhPath);
setListAdapter(ad);
final ListView list=getListView();
list.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
list.setItemsCanFocus(true);
list.setTextFilterEnabled(true);
list.setItemChecked(positions,true);
keyword = (String) list.getItemAtPosition(0);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
menu.add("OK");
menu.add("Cancel");
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case 0:
Intent showContent = new Intent(getApplicationContext(),ListRetailerActivity.class);
Bundle bundle = new Bundle();
bundle.putString("RouteName", keyword);
showContent.putExtras(bundle);
startActivity(showContent);
return true;
case 1:
return true;
default:
return super.onOptionsItemSelected(item);
}
}
Cela fait partie détaillant ListRetailerActivity;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.retailer_list);
Bundle bundle = this.getIntent().getExtras();
String routeName = bundle.getString("RouteName");
setTitle(routeName + " - List Retailer ");
ArrayList<Object> routeList = getWmRoute();
// ArrayList<String> routhPath = new ArrayList<String>();
ArrayList<HashMap<String,String>> alist=new ArrayList<HashMap<String,String>>();
for(int i = 0; i<routeList.size();i++){
HashMap<String, String> map = new HashMap<String, String>();
map.put("RetailerCode", ((WMRoute) routeList.get(i)).getDescription());
map.put("RetailerName", ((WMRoute) routeList.get(i)).getBusinessUnit());
alist.add(map);
}
ListView list=getListView();
sd = new SimpleAdapter(this,alist,R.layout.retalier_rows,new String[]{"RetailerCode","RetailerName"},new int[]{R.id.retailerCode,R.id.retailerName});
list.setAdapter(sd);
list.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
list.setSelected(true);
list.setSelection(0);
list.setTextFilterEnabled(true);
list.setItemsCanFocus(true);
list.setTextFilterEnabled(true);
list.setItemChecked(positions,true);
keyword = ((WMRoute) routeList.get(0)).getBusinessUnit();
//keyword = (String) list.getItemAtPosition(0);
}
Ici je dois montrer ListActivity et TabActivity.How nous pouvons mettre en œuvre.
Tous l'enfant besoin d'activité à la vue de l'onglet spectacle.
S'il vous plaît aidez-moi comment appeler d'autres xml pour la navigation avec vue sur l'onglet.
Merci à l'avance.
La solution
Ok je suis fournirai une démo je l'espère vous aider ....
Firs de tous un ActivityGroup
déclarer comme ceci SalesActivityGroup.java
public class SalesActivityGroup extends ActivityGroup {
// Keep this in a static variable to make it accessible for all the nested activities, lets them manipulate the view
public static SalesActivityGroup group;
// Need to keep track of the history if you want the back-button to work properly, don't use this if your activities requires a lot of memory.
private ArrayList<View> history;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.history = new ArrayList<View>();
group = this;
// Start the root activity withing the group and get its view
View view = getLocalActivityManager().startActivity("Home", new
Intent(this,SalesRouteActivity.class)
.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP))
.getDecorView();
// Replace the view of this ActivityGroup
replaceView(view);
}
public void replaceView(View v) {
// Adds the old one to history
history.add(v);
// Changes this Groups View to the new View.
setContentView(v);
}
public void back() {
if(history.size() > 0) {
history.remove(history.size()-1);
if(history.size() > 0) {
setContentView(history.get(history.size()-1));
}
else {
finish();
}
}else {
finish();
}
}
@Override
public void onBackPressed() {
SalesActivityGroup.group.back();
return;
}
}
Après ce changement votre hôte (MainActivity) (un seul changement TabSpec: firstTabSpec qui est lié à la vente, je suppose) comme ça ...
public class Host extends TabActivity {
public static Button btnRed;
public static TabHost tabHost;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.host);
tabHost = (TabHost)findViewById(android.R.id.tabhost);
TabSpec salesTabSpec = tabHost.newTabSpec("tid1");
Intent intent1 = new Intent(this, SalesActivityGroup.class);//SalesActivityGroup instead of SalesRouteActivity
salesTabSpec.setContent(intent2);
/* Add tabSpec to the TabHost to display. */
tabHost.addTab(salesTabSpec);
}
}
Par la suite chaque fois que vous voulez démarrer une nouvelle activité dans firstTab (salesTab) il vous suffit de vue sur le changement de ActivityGroup lié à cette salesTab
comme celui-ci (démarrer votre listRetailerActivity suivante façon) ...
Intent intent = new Intent(SalesRouteActivity.this, ListRetailerActivity.class);
// Create the view using FirstGroup's LocalActivityManager
View view = SalesActivitytGroup.group.getLocalActivityManager()
.startActivity("", intent
.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP))
.getDecorView();
// Again, replace the view
SalesActivityGroup.group.replaceView(view);