Передача намерения деятельности? - PullRequest
0 голосов
/ 28 ноября 2011

Я разработал простой вкладок с помощью учебника.Выглядит это так:

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 ]

3 голосов
/ 28 ноября 2011

переопределить onTabChange(), который расскажет вам о текущей вкладке №. и следующая вкладка нет.

if(nextTab == DayTab)

сравните currentTab и, соответственно, передайте флаг табу Day.

Я не уверен, что вы можете связать детали с намерением, если это так, используйте общий доступ к данным на уровне приложения, такой как реализация класса Application или объект singlton.

2 голосов
/ 28 ноября 2011

Попробуйте переопределить 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;

    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...