TabHost setCurrentTab只在Tab中调用Activity的oncreate方法一次

Jas*_*son 5 tabs android

我在这里关注这个例子:

http://developer.android.com/resources/tutorials/views/hello-tabwidget.html

一切正常.第一次单击每个选项卡时,将oncreate调用绑定到该特定选项卡的Activity 的方法.但是,后续选项卡的选项不会调用此oncreate方法.

当选择该选项卡时,我需要能够在绑定到每个选项卡的Activity上执行oncreate(或其他方法).我知道我可以使用a setOnTabChangedListener,但我不确定如何访问绑定到选项卡的Activity,以便我可以调用oncreate(或其他)方法.

Cri*_*ian 4

这是一个效率问题......这就是为什么你的onCreate方法没有被调用两次或更多次。TabActivity通过以下方式访问您的活动的更简单方法OnTabChangedListener是:

public class YourTabActivity extends TabActivity{
    public void onCreate(Bundle InSavedInstanceState) {
        super.onCreate(InSavedInstanceState);
        final TabHost tabHost = getTabHost();

        // blablabla

        tabHost.setOnTabChangedListener(new OnTabChangeListener() {
            public void onTabChanged(String tabId) {
                if( tabId.equals("the_id_of_your_tab") ){
                    NameOfThatActivity.self.theMethodYouWantToCall();
                }
            }
        });
    }
}
Run Code Online (Sandbox Code Playgroud)

然后,在您的孩子活动中,您会看到类似以下内容:

public class NameOfThatActivity extends Activity{

    public static NameOfThatActivity self;

    // blah blah blah
    public onCreate(Bundle b){
        super.onCreate(b);
        self = this;
    }

    public void theMethodYouWantToCall(){
        // do what ever you want here
    }
}
Run Code Online (Sandbox Code Playgroud)

虽然不美观,但是效果还不错。