вкладки панели действий Android 3.0+ - PullRequest
0 голосов
/ 19 марта 2012

Я не работал ни с Android 3.0+, ни с панелью действий, поэтому у меня есть вопрос о вкладках, которые можно реализовать в панели действий. Это ограничено только изменением фрагментов? Могут ли быть вкладки: первая активность, второй фрагмент? Из примеров, которые я проверил, есть одно основное действие с панелью действий, и содержимое каждой вкладки представляет собой отдельный фрагмент. Извините, если мой вопрос чем-то очевиден. Заранее спасибо.

Ответы [ 2 ]

2 голосов
/ 19 марта 2012

Я не вижу преимущества того, что вы используете Activity первым, а не фрагменты для них всех?Фрагменты очень мощные и могут обеспечить столько же, сколько и активность.

Сказав это, вы должны иметь возможность получить обратный вызов, когда выбрана вкладка, и поэтому в этом обратном вызове все, что вам нужно сделать, это загрузитьАктивность.Обязательно перейдите на выбранную в данный момент вкладку при загрузке новой операции, чтобы пользователь мог видеть, какую из них он выбрал.

Причина использования фрагмента в том, что вам не нужно загружатьновое действие, и вы можете заменить текущий фрагмент новым контентом.

1 голос
/ 07 мая 2012

Ничто не говорит о том, что вам нужно переключать фрагменты, даже если базовый код структурирован, чтобы его было легко сделать.

Например, я просто использую вкладки, чтобы изменить видимость элементов в когда-то загруженной иерархии макета представления, и это прекрасно работает. Это кажется гораздо более эффективным, если ваша иерархия представлений не так сложна, так как устраняет транзакции фрагментов. Предположительно, изменение видимости довольно эффективно.

Вот неполный фрагмент кода, чтобы дать вам представление о том, как игнорировать транзакции фрагмента и делать свое дело:

    public class AudioManagerTabListener<T extends Fragment> implements
        ActionBar.TabListener {
    @Override
    public void onTabSelected(Tab tab, FragmentTransaction ft) {
        switch ((Integer) tab.getTag()) {
        case TAG_SHARED:
            mGridViewWrapper.setVisibility(View.VISIBLE);
            break;
        case TAG_PLAYING:
            mNowPlayingWrapper.setVisibility(View.VISIBLE);
            break;
        case TAG_PLAYLIST:
            break;
        case TAG_ARTISTS:
            break;
        case TAG_ALBUMS:
            break;
        case TAG_SONGS:
            break;
        }
        if (DBG.AUDIO) {
            Log.d(TAG,
                    "SettingsTabListener- onTabSelected - Tag: "
                            + tab.getText());
        }

    }

    @Override
    public void onTabUnselected(Tab tab, FragmentTransaction ft) {
        switch ((Integer) tab.getTag()) {
        case TAG_SHARED:
            mGridViewWrapper.setVisibility(View.GONE);
            break;
        case TAG_PLAYING:
            mNowPlayingWrapper.setVisibility(View.GONE);
            break;
        case TAG_PLAYLIST:
            break;
        case TAG_ARTISTS:
            break;
        case TAG_ALBUMS:
            break;
        case TAG_SONGS:
            break;
        }
        if (DBG.AUDIO) {
            Log.d(TAG,
                    "SettingsTabListener- onTabUnSelected - Tag: "
                            + tab.getText());
        }

    }

    @Override
    public void onTabReselected(Tab tab, FragmentTransaction ft) {
        if (DBG.AUDIO) {
            Log.d(TAG, "SettingsTabListener- onTabReselected- Position: "
                    + tab.getPosition());
        }
    }
}
...