Хост вкладок - setCurrentTab (x) работает для вкладок, но не для контента [Android]

Я создал приложение с вкладками .. теперь я играю с поворотом экрана. Я попытался установить tabHost.getTabWidget (). SetCurrentTab (1) , который должен отображать вторую вкладку (первая - 0). Дело в том, что вторая вкладка отображается как выбранная, но отображается содержимое первой вкладки ... Как я могу это решить?

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_NO_TITLE);

    setContentView(R.layout.main);

    myCommunicator = new Communicator();
    dbAdapter = new ToDoDBAdapter(this);


    if (getLastNonConfigurationInstance() != null) 
    {
        CurrentTab = (Integer)getLastNonConfigurationInstance();
        createView();
    }
    else
    {
        BuildDialog = ProgressDialog.show(this, "Loading", "Updating data...", true, false);
        BuildDialog.show();
        new LoadChannels().execute();
    }

}


private void createView()
{
        tabHost = (TabHost)findViewById(android.R.id.tabhost);
        tabHost.setOnTabChangedListener(this);

        Intent intent; 
        TabSpec spec;
        intent = new Intent().setClass(this, Channels.class);

        // TAB 1
        spec = tabHost.newTabSpec("kanali").setIndicator("Kanali",getResources().getDrawable(R.drawable.menu_channels)).setContent(intent);
        tabHost.addTab(spec);


        intent = new Intent().setClass(this, Currently.class);

        // TAB 2
        spec = tabHost.newTabSpec("trenutno").setIndicator("Trenutno",getResources().getDrawable(R.drawable.menu_current)).setContent(intent);
        tabHost.addTab(spec);

        intent = new Intent().setClass(this, Reminders.class);

        // TAB 3
        spec = tabHost.newTabSpec("opomniki").setIndicator("Opomniki",getResources().getDrawable(R.drawable.menu_reminder)).setContent(intent);
        tabHost.addTab(spec);

        intent = new Intent().setClass(this, About.class);

        // TAB 4
        spec = tabHost.newTabSpec("oprogramu").setIndicator("O programu",getResources().getDrawable(R.drawable.menu_about)).setContent(intent);
        tabHost.addTab(spec);

        tabHost.setBackgroundColor(Color.WHITE);
        tabHost.setCurrentTab(1); // Should always set content to second
}

@Override Дело в том, что отображается вторая вкладка ...

Я создал приложение с вкладками .. теперь я играю с поворотом экрана. Я попытался установить tabHost.getTabWidget (). SetCurrentTab (1) , который должен отображать вторую вкладку (первая - 0). Дело в том, что вторая вкладка отображается как выбранная, но отображается содержимое первой вкладки ... Как я могу это решить?

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_NO_TITLE);

    setContentView(R.layout.main);

    myCommunicator = new Communicator();
    dbAdapter = new ToDoDBAdapter(this);


    if (getLastNonConfigurationInstance() != null) 
    {
        CurrentTab = (Integer)getLastNonConfigurationInstance();
        createView();
    }
    else
    {
        BuildDialog = ProgressDialog.show(this, "Loading", "Updating data...", true, false);
        BuildDialog.show();
        new LoadChannels().execute();
    }

}


private void createView()
{
        tabHost = (TabHost)findViewById(android.R.id.tabhost);
        tabHost.setOnTabChangedListener(this);

        Intent intent; 
        TabSpec spec;
        intent = new Intent().setClass(this, Channels.class);

        // TAB 1
        spec = tabHost.newTabSpec("kanali").setIndicator("Kanali",getResources().getDrawable(R.drawable.menu_channels)).setContent(intent);
        tabHost.addTab(spec);


        intent = new Intent().setClass(this, Currently.class);

        // TAB 2
        spec = tabHost.newTabSpec("trenutno").setIndicator("Trenutno",getResources().getDrawable(R.drawable.menu_current)).setContent(intent);
        tabHost.addTab(spec);

        intent = new Intent().setClass(this, Reminders.class);

        // TAB 3
        spec = tabHost.newTabSpec("opomniki").setIndicator("Opomniki",getResources().getDrawable(R.drawable.menu_reminder)).setContent(intent);
        tabHost.addTab(spec);

        intent = new Intent().setClass(this, About.class);

        // TAB 4
        spec = tabHost.newTabSpec("oprogramu").setIndicator("O programu",getResources().getDrawable(R.drawable.menu_about)).setContent(intent);
        tabHost.addTab(spec);

        tabHost.setBackgroundColor(Color.WHITE);
        tabHost.setCurrentTab(1); // Should always set content to second
}

@Override Дело в том, что отображается вторая вкладка ...

Я создал приложение с вкладками .. теперь я играю с поворотом экрана. Я попытался установить tabHost.getTabWidget (). SetCurrentTab (1) , который должен отображать вторую вкладку (первая - 0). Дело в том, что вторая вкладка отображается как выбранная, но отображается содержимое первой вкладки ... Как я могу это решить?

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_NO_TITLE);

    setContentView(R.layout.main);

    myCommunicator = new Communicator();
    dbAdapter = new ToDoDBAdapter(this);


    if (getLastNonConfigurationInstance() != null) 
    {
        CurrentTab = (Integer)getLastNonConfigurationInstance();
        createView();
    }
    else
    {
        BuildDialog = ProgressDialog.show(this, "Loading", "Updating data...", true, false);
        BuildDialog.show();
        new LoadChannels().execute();
    }

}


private void createView()
{
        tabHost = (TabHost)findViewById(android.R.id.tabhost);
        tabHost.setOnTabChangedListener(this);

        Intent intent; 
        TabSpec spec;
        intent = new Intent().setClass(this, Channels.class);

        // TAB 1
        spec = tabHost.newTabSpec("kanali").setIndicator("Kanali",getResources().getDrawable(R.drawable.menu_channels)).setContent(intent);
        tabHost.addTab(spec);


        intent = new Intent().setClass(this, Currently.class);

        // TAB 2
        spec = tabHost.newTabSpec("trenutno").setIndicator("Trenutno",getResources().getDrawable(R.drawable.menu_current)).setContent(intent);
        tabHost.addTab(spec);

        intent = new Intent().setClass(this, Reminders.class);

        // TAB 3
        spec = tabHost.newTabSpec("opomniki").setIndicator("Opomniki",getResources().getDrawable(R.drawable.menu_reminder)).setContent(intent);
        tabHost.addTab(spec);

        intent = new Intent().setClass(this, About.class);

        // TAB 4
        spec = tabHost.newTabSpec("oprogramu").setIndicator("O programu",getResources().getDrawable(R.drawable.menu_about)).setContent(intent);
        tabHost.addTab(spec);

        tabHost.setBackgroundColor(Color.WHITE);
        tabHost.setCurrentTab(1); // Should always set content to second
}

@Override публичный объект onRetainNonConfigurationInstance () { return CurrentTab; }

@Override
public void onTabChanged(String tabId) {
    CurrentTab = tabHost.getCurrentTab();
}
public void onDestroy() {
    super.onDestroy();

    // Close the database
    try {
        dbAdapter.close();
    } catch (Exception e) {
        // TODO: handle exception
    }
  }

@Override
public void onConfigurationChanged(Configuration newConfig)
{
    super.onConfigurationChanged(newConfig);
    setContentView(R.layout.main);
    createView();
}
5
задан casperOne 14 February 2013 в 13:03
поделиться