Android:如何动态更改打开的选项卡

发布于 2024-09-28 07:12:08 字数 483 浏览 5 评论 0原文

我有一个 Android 应用程序,有四个选项卡(我使用带有 TabHost 和 TabSpecs 的主 TabActivity)。 在我的一个子活动(在选项卡中打开的活动)中,我需要打开一个选项卡,而不是通过单击选项卡标题,但我不知道如何执行此操作。 例如,我的活动中有一个按钮,当我单击它时,它会打开一个不同的选项卡。 目前,这就是我所做的:
<代码>
Intent意图 = new Intent(myActivity.this, myTabActivity.class);
intent.putExtra("来自", true);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(意图);

然后在 TabActivity 中,如果我真正阅读了“ComeFrom”额外内容,我会打开所需的选项卡,但问题是它会杀死所有其他活动。所以,如果有人知道更好(更干净)的方法来完成这个技巧,请告诉我......

I have an Android application which has four tabs (I use a main TabActivity with TabHost and TabSpecs).
In one of my sub activity (activity opened in a tab), i need to open a tab not by clicking on the tab title and i don't know how to do this.
For example, i have a button in my activity and when i click on it, it opens a different tab.
For the moment, it is what i do:

Intent intent = new Intent(myActivity.this, myTabActivity.class);
intent.putExtra("ComeFrom", true);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);

Then in the TabActivity, if i get true reading the "ComeFrom" extra i open the wished tab but the problem is that it kills all the other activies. So, if someone knows a better (cleaner) way to do that trick, please tell me...

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

半衾梦 2024-10-05 07:12:08

找到了一个更简单的(我认为)答案:

  1. 在 TabActivity 上声明一个公共、静态和 self 变量并将其填充到 onCreate 方法上。铁:

    public class TheActivity 扩展 TabActivity {
        公共静态TheActivity self;
        ...
        @覆盖
        公共无效onCreate(捆绑保存实例状态){
            自我=这个;
    
  2. 在选项卡中运行的任何活动上,当您想要更改应用程序上显示的活动时。你可以这样做:

    TabHost tabHost = TheActivity.self.getTabHost();
    tabHost.setCurrentTab(0);
    

对我来说效果很好,希望对其他人有用!

Found an easier (I think) answer:

  1. on the TabActivity declare a public, static and self variable and populate it on the onCreate method. F.e.:

    public class TheActivity extends TabActivity {
        public static TheActivity self;
        ...
        @Override
        public void onCreate(Bundle savedInstanceState) {
            self=this;
    
  2. on any Activity running in a tab, when you want to change the one shown on your app. you can do this:

    TabHost tabHost = TheActivity.self.getTabHost();
    tabHost.setCurrentTab(0);
    

Worked ok for me, hope serves someone else!

你如我软肋 2024-10-05 07:12:08

为此,您必须使用 TabHost 的“setCurrentTab(...)”。在我的一个项目中,我在主 Activity(带有 TabHost 的 Activity)中创建了一个静态方法,名为“swtichToTab(int tab)”。在我的子活动(选项卡内的子活动)中,只需调用“MainActivity.switchToTab()”即可触发切换。

这可能不是最干净的方法,我相信您也可以使用广播意图来实现这一点。

You have to use TabHost's "setCurrentTab(...)" for that. In one of my projects, I created a static method in the main Activity (the one with the TabHost), named "swtichToTab(int tab)". In my subactivites (those inside the tabs) could then just call "MainActivity.switchToTab()" to trigger switching.

It may not be the cleanest method, I'm sure you can achieve this using broadcast intents too.

叹梦 2024-10-05 07:12:08

您可以创建一个 BroadcastReceiver 并发送带有选项卡索引的广播作为额外

You can create a BroadcastReceiver and send a broadcast with the index of the tab as extra

生生漫 2024-10-05 07:12:08

您可以使用视图而不是活动来显示选项卡的内容。这样,代码会更简单,并且不会使用太多内存。另外,您还可以使用 setCurrentTab(tabIndex) 方法轻松在视图之间切换。

我有一个简单的教程这里。它有一个带有列表和地图视图的选项卡活动。当您单击列表中的某个项目时,活动会动态转到地图视图(使用 setCurrentTab(tabIndex) 方法)。您可以轻松修改它以使用按钮切换视图。

You can use views instead of activities for the content of the tabs. This way, the code is simpler and doesn't use as much memory. Plus, you then can use the setCurrentTab(tabIndex) method to easily switch between views.

I have a simple tutorial here. It has a tab activity with a list and map view. When you you click on an item in the list, the activity dynamically goes to the map view (using the setCurrentTab(tabIndex) method). You can easily modify this to have a button switch views.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文