我正在按照这里的示例进行操作:
http://developer.android.com/resources/tutorials/views/hello-tabwidget.html
一切正常。第一次单击每个选项卡时,将调用绑定(bind)到该特定选项卡的 Activity 的 oncreate
方法。但是,选项卡的后续选择不会调用此 oncreate 方法。
当每个选项卡被选中时,我需要能够在绑定(bind)到每个选项卡的 Activity 上执行 oncreate(或其他方法)。我知道我可以使用 setOnTabChangedListener
,但我不确定如何访问绑定(bind)到选项卡的 Activity,以便调用 oncreate(或其他)方法。
最佳答案
这是一个效率问题...这就是为什么您的 onCreate
方法没有被调用两次或更多次的原因。通过 OnTabChangedListener
从 TabActivity
访问 Activity 的更简单方法是:
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();
}
}
});
}
}
然后,在你的 child Activity 中,你有类似的东西:
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
}
}
这不是美,但效果很好。
关于android - TabHost setCurrentTab 只调用一次 Tab 中 Activity 的 oncreate 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3710222/