0

私はTabHostを使用しており、2つのアクティビティを持つ2つのタブがあり、2番目のタブをデフォルトのタブに設定したいのですが、tabhostが起動すると、最初のtab1をロードし、tab2の前にこれは間違っています。これらの2つのアクティビティではWebサービスからデータをロードするからです。私の質問は、最初のタブをロードせずに現在のタブの2番目のタブを設定する方法です!

私のタブホストコード:

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

2 に答える 2

1

それに置き換えるtabHost.setCurrentTab(1);tabHost.setCurrentTab(2);、2番目のタブがデフォルトのタブとして設定されます。

于 2012-06-06T10:05:26.980 に答える
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;
}
于 2012-06-06T10:03:23.317 に答える