【问题标题】:TabActivity pass extras to child intentsTabActivity 将额外内容传递给子意图
【发布时间】:2010-12-03 00:40:44
【问题描述】:

我有三个活动:

活动 A - 显示来自网站的数据列表。在此活动中,您可以执行一项操作,将某些内容添加到此列表(活动 B)。

活动 B - 这是向网站添加数据的活动。成功完成后,此活动将需要通知活动 A 刷新其列表。

Activity T - 包含 Activity A 的 TabHost。

我的问题是:

Activity B 需要告诉 Activity A 刷新,但它的 Intent 必须是 Activity T,因为我希望 TabHost 显示 Activity A。

//ActivityB.class
Intent myIntent = new Intent(v.getContext(), ActivityT.class);
myIntent.putExtra("target", "ActivityA");
myIntent.putExtra("refreshData", true);
startActivityForResult(myIntent, 0);

我认为我可以使用 TabHost 作为中介,如果设置了额外内容,则只需将它们传递给 Activity A,如下所示:

//ActivityT.class
Bundle extras = getIntent().getExtras();

// Create an Intent to launch an Activity for the tab (to be reused)
intent = new Intent().setClass(this, ActivityA.class);

// Check to see if we want to pass our bundle through to the activity
if (extras != null && extras.getString("target").equals("activityA")) {
     intent.putExtras(extras);
}

// Initialize a TabSpec for each tab and add it to the TabHost
spec = tabHost.newTabSpec("Tab1").setIndicator("Tab1",
            res.getDrawable(R.drawable.ic_tab_tab1)).setContent(intent);
tabHost.addTab(spec);

这很好用,除了当我将选项卡更改为不同的选项卡并改回来时,额外的内容会一次又一次地传递 - 这会导致我的选项卡每次都刷新其数据,即使我不再来自 Activity B。这是因为 TabActivity 不会在选项卡更改时重新创建,因此额外内容始终传递给子 Intent。

那么,我如何告诉 Activity A 仅从 Activity B 刷新,但仍让 TabHost 显示?

【问题讨论】:

  • 这样的小任务,广播是不是有点重任?它们通常不是用来监听其他应用/服务广播的事件/意图吗?

标签: android


【解决方案1】:

我最终暴力破解了这个问题,并复制了 TabHost、TabActivity 和 TabWidget 代码,并根据我的需要对其进行了自定义以解决这个问题。这不是我引以为豪的事情,但它成功了。

它也变得有些有用,因为我做了一些其他的小调整,以便更容易做其他事情。

【讨论】:

  • 这比使用广播更容易吗?
【解决方案2】:

虽然可能不是最优雅的解决方案,但我在我的 ActivityA 类中使用了静态数据成员,我可以从 ActivityB 设置它。

//ActivityA.class

public static boolean refreshData = false;

public void onResume() {
    if (refreshData) {
         mRefreshData();
         refreshData = false;
    }
}

//ActivityB.class

ActivityA.refreshData = true;
Intent myIntent = new Intent(v.getContext(), ActivityT.class);
startActivityForResult(myIntent, 0);

我很想知道是否有更好的方法来做这种事情!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多