在将数据从活动发送到片段时获取NullPointerException

时间:2014-06-23 05:56:43

标签: java android android-fragments

我在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 ,请帮忙

3 个答案:

答案 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);