为了账号安全,请及时绑定邮箱和手机立即绑定

Bundle空对象是怎么回事

 java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Object android.os.Bundle.get(java.lang.String)' on a null object reference

代码:

按钮响应事件:

findViewById(R.id.wwwwwwwwww_ID).setOnClickListener(new View.OnClickListener() {
   @Override
   public void onClick(View v) {
       caonima ccc = new fragment1();
       Bundle bundle = new Bundle();
       bundle.putString("anhao","www");
       ccc.setArguments(bundle);

       android.app.FragmentManager fm = getFragmentManager();
       fm.beginTransaction().replace(R.id.main_ID,new caonima()).commit();
   }
});

fragment:

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
   View view = inflater.inflate(R.layout.frag1,container,false);
   TextView textView = (TextView) view.findViewById(R.id.frag1_text_ID);

   String data = (String) getArguments().get("anhao");
   textView.setText(data);

   return view;
}

正在回答

1 回答

 个人看法: caonima ccc = new fragment1();这句话之后会直接启动fragment,就会直接执行oncreateView的方法,所以会报空指针吧,如果传值的话,最好还是重写fragment中的new instance(Bundle)方法,通过其参数传值,onclick中的代码可以这样写:

 public void onClick(View v) {

Bundle b = new Bundle();

b.put("key","value");

   fragment f =  fragment.new instance(Bundle b);
// new instance方法直接类名.就可以调用
       android.app.FragmentManager fm = getFragmentManager();
       fm.beginTransaction().replace(R.id.main_ID,new caonima()).commit();
   }
});

这个方法可以试试

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
Android攻城狮的第二门课(第1季)
  • 参与学习       111162    人
  • 解答问题       1457    个

本课程由浅入深地带您学会Android的常用控件的开发和使用

进入课程

Bundle空对象是怎么回事

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信