如何在每个片段中创建不同的textview?

时间:2016-02-07 00:19:45

标签: android android-fragments textview

我使用片段制作了3个滑动标签,我希望每个片段都显示文本视图。我的问题是,我该怎么做?现在它写了#34;片段#"在每个标签中,但是文本视图呢?我想在每个标签中写下很多文字。 这就是我写它的片段编号:

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.fragment, container, false);
    TextView tvTitle = (TextView) view.findViewById(R.id.tvTitle);
    tvTitle.setText("Fragment #" + mPage); //Here
    return view;

所以相反,我想要3个文本视图;每个标签中有一个

编辑: 滑动片段:

public class SampleFragmentPagerAdapter extends FragmentPagerAdapter {
final int PAGE_COUNT = 3;
private String tabTitles[] = new String[] { "Tab1", "Tab2", "Tab3" };

public SampleFragmentPagerAdapter(FragmentManager fm) {
    super(fm);
}

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

@Override
public Fragment getItem(int position) {
    return PageFragment.newInstance(position + 1);
}

@Override
public CharSequence getPageTitle(int position) {
    // Generate title based on item position
    return tabTitles[position];
 }
}

FRAGMENT:

public class PageFragment extends Fragment {
public static final String ARG_PAGE = "ARG_PAGE";

private int mPage;

public static PageFragment newInstance(int page) {
    Bundle args = new Bundle();
    args.putInt(ARG_PAGE, page);
    PageFragment fragment = new PageFragment();
    fragment.setArguments(args);
    return fragment;
}

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    mPage = getArguments().getInt(ARG_PAGE);
}

// Inflate the fragment layout we defined above for this fragment
// Set the associated text for the title
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.fragment, container, false);
    TextView tvTitle = (TextView) view.findViewById(R.id.tvTitle);
    tvTitle.setText("Fragment #" + mPage);
    return view;
 }
}

我明白了:

enter image description here

我想在每个标签中写一些不同的东西。我的意思是不同的文本视图,所以我不想写片段#1,而是想写自己的文本(其他标签也一样)

1 个答案:

答案 0 :(得分:0)

您已经拥有允许您为每个页面设置不同文本的框架。自定义文本的最简单方法是修改newInstance()方法:

public static PageFragment newInstance(String message) {
    Bundle args = new Bundle();
    args.putString(ARG_MSG, message);
    PageFragment fragment = new PageFragment();
    fragment.setArguments(args);
    return fragment;

}

(请记住创建ARG_MSG常量,该常量类似于您已有的ARG_PAGE常量。)

现在您需要获取ARG_MSG并设置TextView以显示它。这与您已经使用页码进行的操作非常相似。我会留下细节让你弄明白。