将意图传递给活动?

时间:2011-11-28 07:51:58

标签: java android android-activity tabs

我在教程的帮助下开发了一个简单的tabwidget。它看起来像这样:

enter image description here

我的目标是:当用户点击“日期标签”并点击“今日标签”时,今日标签必须将今日活动的控制权转回日活动,以显示当天的日期。

例如。如果我在日期选项卡中,则单击今天选项卡。 “今日”选项卡的功能是在日期选项卡中显示当前日期。这适用于“月”和“周”选项卡。这意味着如果用户有月标签处于活动状态,然后点击今日标签:今日标签必须显示同一活动中的当前月份。

数据流:月活动 - >今天的活动 - >月活动

我该如何完成这项任务?

我试图用简单的话说,如果你不明白请告诉我。我会重新解释这个问题。

以下是我用来设置标签的代码

public class Secondactivity extends TabActivity {    
private TabHost mTabHost;
    private void setupTabHost() {
mTabHost = getTabHost();
}
        setupTabHost();
    mTabHost.getTabWidget().setDividerDrawable(se.copernicus.activity.R.drawable.tab_divider);
    setupTab(new TextView(this), getString(R.string.month));
    setupTab(new TextView(this), getString(R.string.week));
    setupTab(new TextView(this), getString(R.string.day));
    setupTab(new TextView(this), getString(R.string.today));

    mTabHost.setCurrentTabByTag(getString(R.string.month));
    private void setupTab(final View view, final String tag)
{
    View tabview = createTabView(mTabHost.getContext(), tag);

    if (tag.compareTo(getString(R.string.month)) == 0)
    {
        Intent intent = new Intent(getApplicationContext(), MonthActivity.class);

        TabSpec setContent = mTabHost.newTabSpec(getString(R.string.month)).setIndicator(tabview).setContent(new TabHost.TabContentFactory()
        {

            public View createTabContent(String tag)
            {
                return view;
            }

        });

        setContent.setContent(intent);
        mTabHost.addTab(setContent);
    }

    if (tag.compareTo(getString(R.string.week)) == 0)
    {
        Intent intent = new Intent(getApplicationContext(), WeekActivity.class);

        TabSpec setContent = mTabHost.newTabSpec(getString(R.string.week)).setIndicator(tabview).setContent(new TabHost.TabContentFactory()
        {

            public View createTabContent(String tag)
            {
                return view;
            }

        });

        setContent.setContent(intent);
        mTabHost.addTab(setContent);
    }

    if (tag.compareTo(getString(R.string.day)) == 0)
    {
        Intent intent = new Intent(getApplicationContext(), DayActivity.class);

        TabSpec setContent = mTabHost.newTabSpec(getString(R.string.day)).setIndicator(tabview).setContent(new TabHost.TabContentFactory()
        {

            public View createTabContent(String tag)
            {
                return view;
            }

        });

        setContent.setContent(intent);
        mTabHost.addTab(setContent);
    }
    if (tag.compareTo(getString(R.string.today)) == 0)
    {
        Intent intent = new Intent(getApplicationContext(), DayActivity.class);

        TabSpec setContent = mTabHost.newTabSpec(getString(R.string.today)).setIndicator(tabview).setContent(new TabHost.TabContentFactory()
        {

            public View createTabContent(String tag)
            {
                return view;
            }

        });

        setContent.setContent(intent);
        mTabHost.addTab(setContent);
    }

}

private static View createTabView(final Context context, final String text)
{
    View view = LayoutInflater.from(context).inflate(R.layout.tabs_bg, null);
    TextView tv = (TextView) view.findViewById(R.id.tabsText);
    tv.setText(text);
    return view;
}

2 个答案:

答案 0 :(得分:3)

覆盖onTabChange(),它会告诉您有关实施标签的信息。和下一个标签号。

if(nextTab == DayTab)

比较currentTab并按顺序将标志传递给day Tab。

我不确定您是否可以使用意图绑定详细信息,如果是这样,请使用应用程序级别数据共享,如Application类实现或单个对象。

答案 1 :(得分:2)

尝试覆盖onTabChanged()并传递你的意图或在那里设置你的旗帜。这可能会有所帮助:

@Override
public void onTabChanged(String tabId) {

    switch (tabId)) {

    case 0:
        // Tab 1
        break;
    case 1:
        // Tab 2
        break;
    case 2:
        // Tab 3
        break;
    case 3:
        // Tab 4
        break;

    }
}