【发布时间】:2014-08-22 10:16:03
【问题描述】:
我有一个自定义的DialogFragment 和一个FrameLayout 容器,我想在其中放置一个Fragment,但它的视图总是返回null,我该怎么办?
在DialogCreateAccount.java
public class DialogCreateAccount extends DialogGeneral implements OnClickListener{
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
// TODO Auto-generated method stub
Dialog dialog = super.onCreateDialog(savedInstanceState);
//........
return dialog;
}
@Override
public void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
Fragment fragment = CreateAccountFragment.newInstance();
FragmentTransaction ft = getFragmentManager().beginTransaction();
if(fragment.getView()!=null){ // return always null
ft.add(
getFrameContainer().getId(),
fragment
)
.commit();
}else{
}
Log.i("DialogCreateAccount", "fragment:" +fragment.getView());// return null
}
在 CreateAccountFragment.java 中
public class CreateAccountFragment extends Fragment implements OnClickListener{
public CreateAccountFragment() {
// TODO Auto-generated constructor stub
}
public static CreateAccountFragment newInstance() {
CreateAccountFragment f = new CreateAccountFragment();
return f;
}
@Override
public void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
Log.i("CreateAccountFragment", "onCreate");
//onCreate is called
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// TODO Auto-generated method stub
Log.i("CreateAccountFragment", "onCreateView");
//onCreateView not called
mRootView = inflater.inflate(R.layout.dialog_create_an_account, container, false);
return mRootView;
}
}
在片段中,onCreate 被调用,onCreateView 未被调用。
【问题讨论】:
-
为什么要查看
fragment.getView()!=null? -
因为 fragment.getView() 返回 null
标签: java android android-fragments android-dialogfragment