我在android中实现了片段。
现在我们尝试将活动中的数据发送到片段。但是在发送数据时,我们在片段的*onCreateView*
方法中得到 NullPointerException 。
以下活动代码。
setContentView(R.layout.fragment_1);
FragmentManager fm = getFragmentManager();
FragmentTranstction ft = fm.beginTransaction();
Fragment1 f1 = new Fragment1();
String text1 = "prakash";
Bundle bundle = new Bundle();
bundle.putString("sessionName", text1);
f1.setArguments(bundle);
ft.add(R.id.frag1, f1);
ft.commit();
以下片段代码:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
String strtext = this.getArguments().getString("sessionName");
TextView sessionTitle = (TextView) getView()
.findViewById(R.id.session1);
sessionTitle.setText(strtext);
return inflater.inflate(R.layout.fragment_1, container, false);
}
我犯了什么错误,因为我得到 NullPointerException ,请帮忙
答案 0 :(得分:0)
尝试以下代码: -
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_1, container, false);
String strtext = this.getArguments().getString("sessionName");
TextView sessionTitle = (TextView) view.findViewById(R.id.session1);
sessionTitle.setText(strtext);
return view;
}
您没有获取视图并尝试在textview上设置值。
答案 1 :(得分:0)
你有
TextView sessionTitle = (TextView) getView()
.findViewById(R.id.session1);
getView()
在您的情况下返回null。因此sessionTitle
为空,当您在null上调用setText()
时,您会获得NUllPointerException
。
SO改为
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = (VIew)inflater.inflate(R.layout.fragment_1, container, false);
// inflate tha layout
String strtext = this.getArguments().getString("sessionName");
// get the string
TextView sessionTitle = (TextView) view
.findViewById(R.id.session1);
// initialize textview or initialize it in onActivityCreated using getView
sessionTitle.setText(strtext);
// set text to textview
return view
}
您可以在getView().findViewById(id)
onActivityCreated()
答案 2 :(得分:0)
获取textview的id时,你得到的是 nullpointer exception ,因为使用了getview(),当我们在onActivityCreated方法()中获取id时会使用getview。只需更改getview()以查看将删除此异常。只需要chnage:
TextView sessionTitle = (TextView)view.findViewById(R.id.session1);