2014-09-19 78 views
0

我想打一个关于对话框在我的应用程序,我希望它有默认的对话框的按钮,我决定使用DialogFragment,所以我做了这样的DialogFragment负按钮

public class AboutDialog extends DialogFragment { 

public AboutDialog() { 
    // Empty constructor for fragment 
} 

@Override 
@NonNull 
public Dialog onCreateDialog(Bundle savedInstanceState) { 
    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); 
    builder.setTitle("About"); 
    builder.setNegativeButton("Close", new DialogInterface.OnClickListener() { 
     public void onClick(DialogInterface dialog, int which) { 
      dismiss(); 
     } 
    }); 
    return builder.create(); 
} 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    View rootView = inflater.inflate(R.layout.about_dialog, container); 
    getDialog().setTitle(getString(R.string.action_about)); 
    return rootView; 
} 

}

然后从活动这样

AboutDialog about = new AboutDialog(); 
     about.show(getSupportFragmentManager(), null); 

调用它,然后我得到这个错误

android.util.AndroidRuntimeException: requestFeature() must be called before adding content 

我该如何解决这个问题?

+0

您可以发布您的活动代码吗? – 2014-09-19 09:13:22

+0

活动究竟是什么?这在onOptionsItemSelected中被调用 – 2014-09-19 09:14:32

+0

oncreate您的活动的代码 – 2014-09-19 09:19:38

回答

2
@Override 
public Dialog onCreateDialog(Bundle savedInstanceState) { 
    // Use the Builder class for convenient dialog construction 
    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); 
    LayoutInflater inflater = getActivity().getLayoutInflater(); 
    builder.setView(inflater.inflate(R.layout.about_dialog, null)); 
    builder.setMessage("Test") 
      .setPositiveButton("fire", new DialogInterface.OnClickListener() { 
       public void onClick(DialogInterface dialog, int id) { 
        // FIRE ZE MISSILES! 
       } 
      }) 
      .setNegativeButton("cancel", new DialogInterface.OnClickListener() { 
       public void onClick(DialogInterface dialog, int id) { 
        // User cancelled the dialog 
       } 
      }); 
    // Create the AlertDialog object and return it 
    return builder.create(); 
} 

remove your onCreateView 
相关问题