亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

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季)
  • 參與學習       111145    人
  • 解答問題       1560    個

本課程由淺入深地帶您學會Android的常用控件的開發和使用

進入課程

Bundle空對象是怎么回事

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號