每次访问TabActivity时重新加载活动

时间:2012-10-04 10:10:01

标签: android tabactivity

在android TabActivity中。我希望每次访问时都重新加载一个标签。例如,如果有一个从数据库中获取数据的选项卡,我想在每次出现选项卡活动时获取数据。

我需要在onCreate函数,onResume上放置从数据库获取数据的操作.. ??

3 个答案:

答案 0 :(得分:2)

像第一个选项卡一样使用

public class TabsActivity extends TabActivity {

TabSpec spec1 = tabHost.newTabSpec("tabone");
spec1.setIndicator(createTabView(tabHost.getContext(), "tabone", R.drawable.tab_home));
Intent inte = new Intent(TabsActivity.this, PhotosActivity.class);
inte.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
spec1.setContent(inte);


TabSpec spec2 = tabHost.newTabSpec("tabtwo");
spec2.setIndicator(createTabView(tabHost.getContext(), "tabtwo", R.drawable.tab_account));
Intent _int = new Intent(TabsActivity.this, TabTwoActivity.class);
_int.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
spec2.setContent(_int);

tabHost.addTab(spec1);
tabHost.addTab(spec2);

第二个标签

    public class TabTwoActivity extends TabActivity {

   TabSpec spec1 = tabHostacc.newTabSpec("tabone");
spec1.setIndicator(createTabView(tabHostacc.getContext(), "tabone", R.drawable.tab_home));
Intent inte = new Intent(TabTwoActivity .this,  yourfirstActivity.class);
inte.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
spec1.setContent(inte);      

TabSpec spec2 = tabHostacc.newTabSpec("tabtwo");
spec2.setIndicator(createTabView(tabHostacc.getContext(), "tabtwo", R.drawable.tab_account));
Intent _int = new Intent(TabTwoActivity .this, yoursecondActivity.class);
_int.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
spec2.setContent(_int);      

tabHostacc.addTab(spec1);
tabHostacc.addTab(spec2);

答案 1 :(得分:1)

将您的操作放在OnTabChangeListener中。在这里,您可以检查当前选定的选项卡。相应地进行编码。

请查看this

答案 2 :(得分:0)

实现此目的的简便方法:在Activity的onPause方法中调用finish()。

public void onPause() {
    super.onPause();
    finish();
    }

但你不应该这样做。当用户从onCreate()切换到此选项卡到onResume()时,尊重活动生命周期并移动您需要执行的操作。

为您解决问题:

-onCreate()在第一次切换到Tab时被调用 - 或者它被系统杀死或者调用finish()

每次切换到Tab

时都会调用-onResume() 切换远离Tab

时会调用-onPause()

最好的办法:

     public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    //setup your contentview etc
    }
  public void onResume() {
    super.onResume();
    //get your data
    }