Android - 在视图中显示带有自定义文本的片段

时间:2015-05-07 00:12:52

标签: java android android-fragments fragment

我需要在屏幕上显示几个片段。所有片段都是一个片段类的实例,但我需要能够设置我的值来查看这些片段上的attrbutes(例如TextView中的文本)。我从这里尝试了很多解决方案,但没找到。 我现在在做什么:

FragmentManager manager = getFragmentManager();
FragmentTransaction transaction = manager.beginTransaction();
transaction = manager.beginTransaction();
List<Comment> comments = place.getComments();
int i = 0;
for (Comment comment : comments) { //some cycle...

     ReviewFragment reviewFragment = new ReviewFragment();
     transaction.add(scrollView.getId(), reviewFragment, "review" + i);
     ((TextView) reviewFragment.getView().findViewById(R.id.author)).setText(comment.getAuthor());
     i++;

}
transaction.commit();

但是我得到NullPointerException:reviewFragment.getView()为null。我尝试提交事务并在每个片段后开始新的,但它没有帮助。如何在片段视图中设置自定义值?

P.S。我在ReviewFragment中没有对覆盖方法做一些特别的事情。我应该吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

在构建片段并传递要显示的文本时,可以调用片段的方法setArguments()。然后在ReviewFragment类中,您可以调用getArguments()来检索文本并显示它。

在您创建片段的部分中:

ReviewFragment reviewFragment = new ReviewFragment();
Bundle args = new Bundle();
args.putString("text", "The text to display here");
reviewFragment.setArguments(args);
transaction.add(scrollView.getId(), reviewFragment, "review" + i);

以及ReviewFragment的onCreateView()

// after inflating the view and before returning it
String textToDisplay = getArguments().getString("text");
myTextView.setText(textToDisplay);