如何在Android Studio中编辑片段内容?

时间:2017-01-15 19:31:44

标签: java android xml android-studio

我一直在努力在 Android Studio 中创建ViewPager很长一段时间,但我刚刚意识到您可以使用预先配置的{{1}自动创建一个}。

使用Activity创建了Tabbed ActivityAction Bar Tabs后,我最终得到了两个XML布局:ViewPageractivity_main.xml。但是,我不确定如何独立更改每个片段。每当我在fragment_main.xml中添加TextView时,它就会出现在所有三个预定义的部分中。

如何在不影响其他两个部分的情况下更改一个部分?!

2 个答案:

答案 0 :(得分:1)

您应该阅读Creating Swipe Views with Tabs。这将向您展示如何使用ViewPager创建标签。特别是,您需要一个PagerAdapter,负责为每个选项卡创建正确的片段。

答案 1 :(得分:-1)

在FragmentPagerAdapter中的方法getItem(int position)中,此行PlaceholderFragment.newInstance(position + 1)决定它返回的片段。 只有一种类型的Fragment,返回的片段具有相同的布局,但在PlaceholderFragment中,您可以根据位置更改它的布局,例如:

 /**
 * A placeholder fragment containing a simple view.
 */
public static class PlaceholderFragment extends Fragment {
    /**
     * The fragment argument representing the section number for this
     * fragment.
     */
    private static final String ARG_SECTION_NUMBER = "section_number";

    public PlaceholderFragment() {
    }

    /**
     * Returns a new instance of this fragment for the given section
     * number.
     */
    public static PlaceholderFragment newInstance(int sectionNumber) {
        PlaceholderFragment fragment = new PlaceholderFragment();
        Bundle args = new Bundle();
        args.putInt(ARG_SECTION_NUMBER, sectionNumber);
        fragment.setArguments(args);
        return fragment;
    }


    private int mPosition;
    @Override
    public void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        mPosition = getArguments().getInt(ARG_SECTION_NUMBER);

    }
    private View mRootView;
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        switch (mPosition) {
            case 0:
                 mRootView = inflater.inflate(R.layout.fragment_layout_0, container, false);
                break;
            case 1:
                 mRootView = inflater.inflate(R.layout.fragment_layout_1, container, false);
                break;
            case 2:
               mRootView = inflater.inflate(R.layout.fragment_layout_2, container, false);
                break;
        }
        TextView textView = (TextView) mRootView.findViewById(R.id.section_label);
        textView.setText(getString(R.string.section_format, getArguments().getInt(ARG_SECTION_NUMBER)));
        return mRootView;
    }
}