Articles of android tabhost

在Android中使用tab-host实现选项卡之间的滑动

在Android中,我可以使用tab-host 在选项卡function之间实现滑动 。 是否可以在没有片段的情况下使用此function。 当我们针对较旧的Android版本时,我们如何实现此function。 有人能帮我吗。 谢谢!

onResume()没有触发TabHost项目切换

我有一个带有两个tabs的TabHost 。 第一次切换到第二个tab ,调用了第二个tab的onResume()方法。 然后我显示了一个AlertDialog ,在它消失后,’onResume()’方法没有被调用,但我真的在等它。 我假设调用’AlertDialog’触发’onPause()’方法并且’onResume()’应该在实际显示’Activity’并准备好与用户交互之前调用。 但是当我切换回另一个activity的第一个tab ,不会调用’onPause()’。 您能否建议为什么不调用’onPause()’和’onResume()’方法以及在显示’AlertDialog’或在tabs之间切换后调用哪些方法?

用FragmentActivity和Fragments替换TabActivity

由于TabActivity已弃用,我需要find一种方法来使用Fragments。 在我知道它是如何工作之前我曾经使用过Fragments但是我需要一个指南来创建带有FragmentActivities的标签主机。 我在互联网上find了几个例子,它们都是关于将片段放入选项卡的容器中。 我想要的是为每个选项卡添加FragmentActivities。 因为在我的应用程序中,我将使用4个选项卡,每个选项卡中都包含非常复杂的内容。 因此,我需要为每个选项卡提供FragmentActivity来管理我将放在单独容器中的每个选项卡下的片段。 解: 在回答并在互联网上搜索后,我得到了一个解决方案。 根据我发现的解决方案,我在标签主机下的每个选项卡中跟踪分隔堆栈中的碎片。 这是我的GitHub存储库,我为这个问题创建了一个小示例应用程序。

布局中定义的TabHost在setContent期间给出NullPointerException

我正在尝试从Android API Demos 16修改Tabs1.java (并在API 16仿真器上运行)以使用标准Activity而不是已弃用的TabActivity类。 我已经创建了一个新的布局文件并修改了代码。 我试图使用这种方法而不是操作栏的原因是标签不适用于整个屏幕,只适用于较小的子视图。 当我执行代码时,我在执行以下行时在Android setContent方法中得到NullPointerException : tabHost.newTabSpec(“tab1”).setIndicator(“tab1”).setContent(R.id.view1) 任何想法为什么会这样? 完整堆栈跟踪是在代码和布局之后。 Tabs1VanillaActivity.java : public class Tabs1 extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.tabs1); TabHost tabHost = (TabHost) findViewById(R.id.tabhost); tabHost.addTab(tabHost.newTabSpec(“tab1”) .setIndicator(“tab1”) .setContent(R.id.view1)); tabHost.addTab(tabHost.newTabSpec(“tab3”) .setIndicator(“tab2”) .setContent(R.id.view2)); tabHost.addTab(tabHost.newTabSpec(“tab3”) .setIndicator(“tab3”) .setContent(R.id.view3)); } } tabs1.xml: 堆栈跟踪: 09-18 16:18:22.968: E/AndroidRuntime(1191): FATAL EXCEPTION: main 09-18 […]

如何使用特定选项卡启动活动?

我已经阅读了很多示例,问题和教程,但我从未见过具有特定选项卡的活动启动(启动新意图)。 我知道可以使用.setCurrentTab切换到选项卡,但这只能从父活动选项卡中完成。 如何从不同的活动中启动一个活动中包含的特定选项卡? 可能吗? 如果是这样,那怎么样? 在我的代码中,在标准活动启动用户显示第一个选项卡,但我希望他转到第四个选项卡,以防他从另一个活动重定向。 我的TabHost代码(MyTabActivity): int tabIndex = 0; mTabHost.addTab(mTabHost.newTabSpec(“top10”).setIndicator(“Top 10”).setContent(R.id.Top_10)); mTabHost.addTab(mTabHost.newTabSpec(“billable”).setIndicator(“Billable”).setContent(R.id.Billable)); mTabHost.addTab(mTabHost.newTabSpec(“product”).setIndicator(“Product”).setContent(R.id.Product)); mTabHost.addTab(mTabHost.newTabSpec(“regular”).setIndicator(“Regular”).setContent(R.id.General)); mTabHost.setCurrentTab(tabIndex); 现在进行另一项活动: public void gotoTab() { //This will take me to the first tab Intent i = new Intent(this, MyTabActivity.class); startActivity(i); finish(); //How to I make it take me to the fourth tab? }

当我第一次打开tabhost的选项卡时,为什么调用onResume?

我有一个带有一些标签的tabhost,每个标签都实现了onresume方法,因为每次用户再次在tabhost中输入时,我需要从远程数据库重新加载所有数据,而不仅是第一次打开它。 好吧,它工作得很好,但问题是,当用户第一次打开一个选项卡时,调用onCreate和onResume这两个方法,然后,我的应用程序连接两次进入数据库以检索信息….我想只在用户第一次进入tabhost时才调用onCreate 如何避免这个罕见的问题?

Android – 在选择其他选项卡时未调用onTabChanged

感谢您查看我的询问! 我已经实现了一个标签环境,如下图所示。 它似乎按照我的预期工作,除了它永远不会执行onTabChanged方法。 我find了几个关于这种情况的post,但是无法让我的代码按照我的预期工作。 建议吗? 谢谢,芯片 public class TestTabActivity extends TabActivity implements OnTabChangeListener { public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Resources res = getResources(); // Resource object to get Drawables TabHost tabHost = getTabHost(); // The activity TabHost TabHost.TabSpec spec; // Resusable TabSpec for each tab Intent intent; // Reusable Intent for each tab […]

Android标签帮助。 应用程序打开时如何将第二个选项卡设置为默认值

我创建了一个包含3个标签的应用。 该应用程序工作正常但我希望在应用程序打开时选择并加载第二个选项卡。 我怎么设置? 这是我的代码: public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); TabHost tabHost = getTabHost(); // Tab for Home TabSpec homespec = tabHost.newTabSpec(“Home”); // setting Title and Icon for the Tab homespec.setIndicator(“Home”,getResources().getDrawable(R.drawable.icons_home_tab)); Intent photosIntent = new Intent(this, HomeActivity.class); homespec.setContent(photosIntent); // Tab for Child TabSpec childspec = tabHost.newTabSpec(“Child”); childspec.setIndicator(“Child”,getResources().getDrawable(R.drawable.icons_child_tab)); Intent homeIntent = new Intent(this, ChildActivity.class); childspec.setContent(homeIntent); […]

FragmentTabHost&Fragments – 如何在标签之间传递数据?

我有一个MainActivity(FragmentActivity),它有一个FragmentTabHost。 public class FragmentTabs extends FragmentActivity { private FragmentTabHost mTabHost; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.fragment_tabs); mTabHost = (FragmentTabHost)findViewById(android.R.id.tabhost); mTabHost.setup(this, getSupportFragmentManager(), R.id.realtabcontent); mTabHost.addTab(mTabHost.newTabSpec(“classA”).setIndicator(“Class A”), ClassA.class, null); mTabHost.addTab(mTabHost.newTabSpec(“classB”).setIndicator(“Class B”), ClassB.class, null); mTabHost.addTab(mTabHost.newTabSpec(“classC”).setIndicator(“Class C”), ClassC.class, null); } } ClassA,ClassB和ClassC都是Fragments (android.support.v4.app.Fragment)。 我需要在Fragments上传递数据(和调用方法)。 如何获得每个片段的引用,如下所示: ClassA mClassAFragment = ???; 我尝试过使用getSupportFragmentManager()。findFragmentByTag(),我也尝试过探索mTabHost的function。 没有什么可以得到他们。 你能建议一种方法来做这个或建议一种替代方法吗?

标签主机 – setCurrentTab(x)适用于标签但不适用于内容

我已经创建了标签应用..现在我正在玩屏幕旋转。 我试着设置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; […]