2012-06-06 3 views
0

Я использую TabHost, и у меня есть 2 вкладки с двумя активностями. Я хочу, чтобы вторая вкладка была закладкой по умолчанию, но когда табстер начинает загружать первую tab1 и перед tab2, это неправильно, потому что в этих двух действиях i загружать данные из webservice! Мой вопрос заключается в том, как установить текущую вкладку второй вкладке без загрузки первой вкладки!Android TabHost setCurrentTab()

Мой tabhost код:

public class TabsHandler extends TabActivity { 
private static TabHost tabHost; 
Intent intent; 
    private void setupTabHost() { 
    tabHost = (TabHost) findViewById(android.R.id.tabhost); 
    tabHost.setup(this.getLocalActivityManager()); 
    tabHost.setCurrentTab(1); 
    } 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      if(!isOnline()) 
       Utils.DialogNoInternet(this); 
      String authToken = getIntent().getExtras().getString("token"); 
      Long role = getIntent().getExtras().getLong("role"); 
      String EventIdNotification =getIntent().getExtras().getString("EventIdNotification"); 
      setContentView(R.layout.event_list_tabs);  

      setupTabHost(); 
      Resources res = getResources(); 
      tabHost.getTabWidget().setClipChildren(false); 


      setupTab(new TextView(this), res.getString(R.string.tab1_List),new Intent().setClass(this, EventListActivity.class).putExtra("authToken", authToken).putExtra("role", role).putExtra("EventIdNotification", EventIdNotification)); 
      setupTab(new TextView(this), res.getString(R.string.tab2_List),new Intent().setClass(this, PastEventListActivity.class).putExtra("authToken", authToken).putExtra("role", role).putExtra("isPast", "true")); 
      tabHost.setCurrentTab(1); 



    } 
    public void switchTab(int tab){ 
      tabHost.setCurrentTab(tab); 
    } 
    public boolean isOnline() { 
     ConnectivityManager cm = 
      (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); 
     NetworkInfo netInfo = cm.getActiveNetworkInfo(); 
     if (netInfo != null && netInfo.isConnectedOrConnecting()) { 
      return true; 
     } 
     return false; 
    } 
    private void setupTab(final View view, final String tag,Intent intent) { 
      View tabview = createTabView(tabHost.getContext(), tag); 
      TabSpec setContent = tabHost.newTabSpec(tag); 
      setContent.setIndicator(tabview); 
      setContent.setContent(intent); 
      tabHost.addTab(setContent); 
    } 

    private static View createTabView(final Context context, final String text) { 

      View view = LayoutInflater.from(context).inflate(R.layout.tabs_bg, null); 
      TextView tv = (TextView) view.findViewById(R.id.tabsText); 
      tv.setText(text); 
      return view; 
    } 
+0

tabHost.setCurrentTab (1); измените это на tabHost.setCurrentTab (2); – KMI

ответ

0
public class TabsHandler extends TabActivity { 
private static TabHost tabHost; 
    Intent intent; 
private void setupTabHost() { 
tabHost = (TabHost) findViewById(android.R.id.tabhost); 
tabHost.setup(this.getLocalActivityManager()); 
tabHost.setCurrentTab(2); 
} 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     if(!isOnline()) 
      Utils.DialogNoInternet(this); 
     String authToken = getIntent().getExtras().getString("token"); 
     Long role = getIntent().getExtras().getLong("role"); 
     String EventIdNotification =getIntent().getExtras().getString("EventIdNotification"); 
     setContentView(R.layout.event_list_tabs);  

     setupTabHost(); 
     Resources res = getResources(); 
     tabHost.getTabWidget().setClipChildren(false); 


     setupTab(new TextView(this), res.getString(R.string.tab1_List),new Intent().setClass(this, EventListActivity.class).putExtra("authToken", authToken).putExtra("role", role).putExtra("EventIdNotification", EventIdNotification)); 
     setupTab(new TextView(this), res.getString(R.string.tab2_List),new Intent().setClass(this, PastEventListActivity.class).putExtra("authToken", authToken).putExtra("role", role).putExtra("isPast", "true")); 
     tabHost.setCurrentTab(2); 



} 
public void switchTab(int tab){ 
     tabHost.setCurrentTab(tab); 
} 
public boolean isOnline() { 
    ConnectivityManager cm = 
     (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); 
    NetworkInfo netInfo = cm.getActiveNetworkInfo(); 
    if (netInfo != null && netInfo.isConnectedOrConnecting()) { 
     return true; 
    } 
    return false; 
} 
private void setupTab(final View view, final String tag,Intent intent) { 
     View tabview = createTabView(tabHost.getContext(), tag); 
     TabSpec setContent = tabHost.newTabSpec(tag); 
     setContent.setIndicator(tabview); 
     setContent.setContent(intent); 
     tabHost.addTab(setContent); 
} 

private static View createTabView(final Context context, final String text) { 

     View view = LayoutInflater.from(context).inflate(R.layout.tabs_bg, null); 
     TextView tv = (TextView) view.findViewById(R.id.tabsText); 
     tv.setText(text); 
     return view; 
} 
1

заменить tabHost.setCurrentTab(1); с tabHost.setCurrentTab(2); он будет установлен второй вкладки, вкладки по умолчанию.

Смежные вопросы