2011-07-26 1 views
4

탭보기에서 문제가 있습니다. 탭보기 많은 탐색을 표시해야합니다. 예를 들어. "영업"이라는 첫 번째 탭에서 모든 판매 경로를 나열합니다. 사용자가 하나의 경로를 클릭하면 첫 번째 탭에서 현명한 것처럼 소매 업체의 목록으로 이동해야합니다. 많은 페이지 (보기)를 사용할 수 있습니다.Android 탭보기

첫 번째보기의 탭만 표시하면 탭을로드하면 탭보기가있는 판매 경로 목록이 표시됩니다. 판매 경로를 클릭하면 소매 업체가 표시되지만 탭보기는 표시되지 않습니다. 이것은 내 mainActivity입니다 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> 

:

내 코드이 내 SalesRouteActivity입니다

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); 
} 

;

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); 
    } 
} 

소매 업체 부품입니다. 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); 


} 

나는 우리가 이것을 구현할 수 TabActivity.How listActivity &를 표시해야합니다.

enter image description hereenter image description here

모든 자식 활동

탭보기를 표시해야합니다.

탭보기가있는 탐색을 위해 다른 XML을 호출하는 방법을 알려주십시오.

미리 감사드립니다.

+0

당신은 ActivityGroup을 사용할 수는, 다음은 예입니다 HTTP : //www.anddev.org/code-snippets-for-android-f33/activity-group-t4752.html –

+0

ActivityGroup을 확장하면 TabHost를 사용할 수 없습니다. tabHost = (TabHost) findViewById (android.R.id. 탭 호스트); TabHostProvider tabProvider = 새 CarmeTabProvider (this); \t \t TabHost tabHosts = tabHost.getTabHost ("Sales"); \t \t tabHost.setCurrentView (R.layout.main); \t \t setContentView (tabHost.render()); . 그렇지 않니? – Piraba

답변

4

나는 내가 당신을 도움이되기를 바랍니다 데모 .... 모든

전나무를 제공하고 좋아는 호스트를 변경 이후이 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; 
      } 

    } 

(mainActivity)과 같은 하나의 ActivityGroup (변경 신고 하나을 TabSpec : firstTabSpec이 같은 것 같아요 판매) 관련이 ... 그 후

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); 

     } 
} 

때 새로운 ACTI을 시작하려는 지금 firstTab (salesTab)에서 vity 당신은 그냥 salesTab이 같은

(방법 다음 당신의 listRetailerActivity 시작)에 관한 ActivityGroup의보기를 변경해야 ...

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); 
+0

고맙습니다. 나는이 부분을 현재 시도한다.문제가 있다면 다시 연락 드리겠습니다 – Piraba

+0

고맙습니다. 잘 작동합니다. 이제 ListRetailer를 RetailerOption에 호출합니다. 다른 격자보기가 포함되어 있습니다. 할 수 있습니까? 나는 그 중 하나를 시도하고있다. – Piraba

+0

예, 가능합니다. startActivity() 대신 SalesActivityGroup.group.replaceView (view)를 사용하여 그 Activity를 시작하지 마십시오. 응답 –

관련 문제