我在这里关注这个例子:
http://developer.android.com/resources/tutorials/views/hello-tabwidget.html
一切正常。第一次单击每个选项卡时,将调用绑定到该特定选项卡的Activity的oncreate
方法。但是,后续选项卡的选项不会调用此oncreate方法。
当选择该选项卡时,我需要能够在绑定到每个选项卡的Activity上执行oncreate(或其他方法)。我知道我可以使用setOnTabChangedListener
,但我不确定如何访问绑定到选项卡的Activity,以便我可以调用oncreate(或其他)方法。
答案 0 :(得分:4)
这是效率的问题......这就是为什么你的onCreate
方法没有被调用两次或更多次的原因。从TabActivity
到OnTabChangedListener
访问您活动的eaiser方式是:
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();
}
}
});
}
}
然后,在你的孩子活动中,你有类似的东西:
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
}
}
这不是美,但它运作良好。
答案 1 :(得分:2)
查看Activity class中的onStart方法,我认为你想覆盖它而不是onCreate(或者除此之外,通常只在onCreate中调用setContentView)
答案 2 :(得分:2)
使用TabActivity.getCurrentActivity()
时可以调用的另一种方法答案 3 :(得分:1)
正如@Cristian指出的那样,这是一个效率问题。 但您总是可以在子活动中使用onResume()方法。
@Override
protected void onResume() {
super.onResume();
// do work
}