【问题标题】:Getting NullPointerException while sending data from activity to fragment在将数据从活动发送到片段时获取 NullPointerException
【发布时间】:2014-10-08 05:49:05
【问题描述】:

我已经在 android 中实现了片段。 现在我们尝试将数据从活动发送到片段。但是在发送数据时,我们在片段的*onCreateView* 方法中得到了 NullPointerException

以下Activity的代码。

 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();

Fragment 代码如下:

    @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,请帮助

【问题讨论】:

标签: java android android-fragments


【解决方案1】:

试试下面的代码:-

 @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 上设置值。

【讨论】:

    【解决方案2】:

    你有

     TextView sessionTitle = (TextView) getView()
            .findViewById(R.id.session1);
    

    getView() 在您的情况下返回 null 。所以sessionTitle 是空的,当你在空上调用setText() 时你会得到NUllPointerException

    所以改成

    @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
    }
    

    你可以在onActivityCreated()中使用getView().findViewById(id)

    【讨论】:

      【解决方案3】:

      在获取textview的id时会得到nullpointer异常,因为使用getview(),我们在onActivityCreated方法()中获取id时使用getview。只需将 getview() 更改为 view 即可删除此异常。只需 chnage :

      TextView sessionTitle = (TextView)view.findViewById(R.id.session1);
      

      【讨论】:

        猜你喜欢
        • 2017-08-16
        • 1970-01-01
        • 1970-01-01
        • 2012-09-26
        • 2017-12-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多