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;
}
2016-09-26
?個人看法: 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();
? ?}
});
這個方法可以試試