我的应用程序中有一个对话框片段,我称之为 -
dialog=new
FragmentActivity.dfragment(this);
getFragmentManager().findFragmentById(R.id.fragment3).getView()
.findViewById(R.id.btn1)
.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
dialog.show(getFragmentManager(), "Dialog");
System.out.println(getFragmentManager().findFragmentByTag("Dialog").getTag());
// gives null pointer exception
}
});
// Dialog frag类。
public static class dfragment extends DialogFragment {
public dfragment(DialogDisplayed dd) {
super();
this.dd = dd;
Bundle b = new Bundle();
b.putBoolean("Value", true);
setArguments(b);
}
DialogDisplayed dd;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// TODO Auto-generated method stub
getDialog().setTitle("DIALOG FRAGMENT");
View v = inflater.inflate(R.layout.dialog_layout, container);
v.findViewById(R.id.diss).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Toast.makeText(getActivity(), "Setting the bundle",
Toast.LENGTH_SHORT).show();
dismiss();
dd.onDialogClicked();
}
});
return v;
}
}
我相信它无法通过标记“Dialog”找到片段,即使文档说它将它添加到FragManager中。 我想知道它为什么会例外 感谢
答案 0 :(得分:0)
您有空引用异常原因
dialog.show(getFragmentManager(),“Dialog”);
不会立即将您的片段添加到fragmentManager,而是创建FragmentTransaction并安排提交。当UI线程准备就绪时,将执行此提交。 有关详细信息,请参阅http://developer.android.com/reference/android/app/FragmentTransaction.html#commit()。