Вкладки фрагментов и с разными макетами

Таким образом, кажется, что стандартом для вкладок в Android сейчас является использование tabhost в FragmentActivity, а затем каждая вкладка как фрагмент. Проблема, с которой я здесь сталкиваюсь, заключается в том, что вся система, состоящая из боковых фрагментов для одной и той же FragmentActivity (планшеты или ландшафтный режим) или запускающая один фрагмент другой FragmentActivity со вторым фрагментом (если это небольшое устройство или ротация) не будет работать, потому что вы не можете иметь FragmentActivities для каждой вкладки. Итак, как мне реализовать основное преимущество наличия фрагментов на вкладках?

с уважением,


person Maxrunner    schedule 23.05.2012    source источник


Ответы (1)


Да, у вас могут быть фрагменты для каждой вкладки.

Это пример для PagerAdapter:

public class ExamplePagerAdapter extends FragmentPagerAdapter {

    public ExamplePagerAdapter(FragmentManager fm) {
        super(fm);
        // TODO Auto-generated constructor stub
    }


    @Override
    public int getCount() {
        return 3;
    }

    @Override
    public Fragment getItem(int position) {
        Fragment f = null;
        switch(position){
        case 0:
        {
        f = new ArrayListFragment();
        // set arguments here, if required
        Bundle args = new Bundle();
        f.setArguments(args);
        break;
        }
        case 1:
        {
            f = new PrincipalFragment();
            // set arguments here, if required
            Bundle args = new Bundle();
            f.setArguments(args);
            break;
        }
        case 2:
        {   
            f = new ViewFragment();
            // set arguments here, if required
            Bundle args = new Bundle();
            f.setArguments(args);
            break;
        }   
        default:
          throw new IllegalArgumentException("not this many fragments: " + position);
        }


        return f;


}

}

Вы можете использовать это для вызова каждой активности для каждого фрагмента.

public class PrincipalFragment extends Fragment {

    private int mNum;
    private EditText et;



    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        mNum = getArguments() != null ? getArguments().getInt("num") : 1;
    }

    /**
     * The Fragment's UI is just a simple text view showing its
     * instance number.
     */
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        View v = inflater.inflate(R.layout.scrollview, container, false);



        ImageView i = (ImageView)v.findViewById(R.id.imageView1);
          ImageView i2 = (ImageView)v.findViewById(R.id.imageView2);

          ImageView i4 = (ImageView)v.findViewById(R.id.imageView4);
          ImageView i5 = (ImageView)v.findViewById(R.id.imageView5);


          ImageDownloader.Mode mode = ImageDownloader.Mode.CORRECT;
          ImageDownloader imageDownloader = new ImageDownloader();
          imageDownloader.download(URLnames.URLS[1], i);
          imageDownloader.download(URLnames.URLS[2], i2);
          imageDownloader.download(URLnames.URLS[3], i4);
          imageDownloader.download(URLnames.URLS[4], i5);


        return v;

Как и в приведенном выше примере, я называю макет прокруткой, поэтому, когда вы собираетесь создать scrollview.xml, вам нужно указать детали.

«Создать»> «Android xml-файл»> «Выбрать тип макета»> «Далее»> «Выбрать конкретную конфигурацию» (вы можете использовать ее по плотности, по ориентации и т. д.)> «Готово».

Теперь eclipse создаст отдельную папку для каждой конкретной конфигурации и будет управлять ею самостоятельно, когда вы запускаете разные размеры экрана или версию sdk.

Прочтите Поддержка нескольких экранов для получения дополнительной информации.

Не знаете, как правильно реализовать прокрутку вкладок? Посетите этот ответ: Actionbarsherlock + вкладки + несколько фрагментов?

Внутри действия фрагмента вы можете создать случай для выбора ориентации экрана или поместить его в AndroidManifest.xml.

person Marckaraujo    schedule 23.05.2012
comment
Хорошо, спасибо, мне нужно проверить это завтра... но где же ActivityFragments, кажется, это возвращает фрагменты с помощью метода getItem(), но куда мне это поместить? - person Maxrunner; 24.05.2012
comment
он вернет фрагменты, просто прочитайте мое дополнение и дайте мне ответ. - person Marckaraujo; 25.05.2012