Добавление отдельного фрагмента отдельно от вкладок фрагментов с помощью ViewPager - PullRequest
3 голосов
/ 14 марта 2012

У меня возникли проблемы с добавлением Fragment помимо Fragments, который я связал с каждым из моих Tabs. Другими словами, я хочу иметь возможность проводить между Fragments с ViewPager, но я не хочу, чтобы первый Fragment был одним из Tabs.

Мои Adpater для ViewPager и мои Tabs в основном соответствуют примеру Google * на веб-сайте разработчиков.

Я попытался пойти дальше и добавить Fragment, который я хочу отделить от других, в TabHost в качестве вкладки, а затем установить видимость TabWidget в положение GONE в позиции 0, хотя это и удаляет TabWidget , когда я проведу пальцем в любую другую позицию, вкладка для позиции 0 все еще будет там. Этот метод тоже немного неуклюжий, и я бы предпочел реализовать его в более приятной манере.

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

1 Ответ

0 голосов
/ 23 марта 2012

Я думаю, что подобное происходит в моем приложении.У меня есть набор вкладок панели действий, каждая из которых имеет свой собственный фрагмент.Когда вы нажимаете на определенные кнопки на вкладке, запускается другой фрагмент.Очевидно, вы знаете все о ViewPager, решении TabListener и т. Д. Но мое решение запускает еще один фрагмент, который занимает весь экран.Когда вы нажимаете кнопку назад (фокусируясь на новом фрагменте), он возвращает вас туда, где вы были на вкладке панели действий.Вот фрагмент кода, который запускает новый фрагмент:

public class EconFragment extends Fragment {

private ViewGroup container;
private TableLayout questionContainer;
private ScrollView scrollView;
private ViewGroup econFragment;
private View[] questions;
static int pos = 0;
private String[] titles = {"The first title ", "hallo1","hallo2", "hallo3",
        "hallo4", "hallo5","hallo6", "hallo7","hallo8", "hallo9"};

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    Log.d("Econ", "onCreateView");
    this.container = container;
    return inflater.inflate(R.layout.econfragment, container, false);
}

public OnClickListener chartsListener = new OnClickListener() {
    public void onClick(View v) {
        Intent chart = new Intent();
        chart.setClass(getActivity(), Chart.class);
        chart.putExtra("key", titles[v.getId()]);
        Log.v("TAG", Integer.toString(v.getId()));
        startActivity(chart);
    }
};

Как вы можете видеть, я запускаю новое намерение под названием chart.Класс диаграммы затем устанавливается как Диаграмма - который расширяет фрагмент.Вот обсуждение переполнения стека, которое привело меня к этой реализации: Запустить фрагмент через намерение внутри фрагмента

...