Android - 如何使用DialogFragment单击按钮打开AlertDialog?

时间:2013-01-27 20:30:32

标签: android android-alertdialog android-dialogfragment

所以我创建了一个DialogFragment .java文件来显示我的警报对话框。我使用教程here创建了一个带列表的AlertDialog。

如何在ContactList.java文件中引用此片段?我所理解的是从教程中做到这一点的方式似乎不起作用。当我尝试使用我的ContactList.java文件中的下面的代码执行onClick事件时,我在getSupportFragmentManager()下得到一个红色的波浪形。 这是片段的代码:

public class StatusDialogFragment extends DialogFragment {
public Dialog onCreateDialog(Bundle savedInstanceState) {
    // Use the Builder class for convenient dialog construction
    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
    builder.setTitle(R.string.choose_status);
    builder.setItems(R.array.status_choices,
            new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int which) {
                    dismiss();
                }
            });
    return builder.create();
}

}

这是我的相关ContactList.java文件代码:

public class ContactList extends Activity implements OnClickListener {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    this.requestWindowFeature(Window.FEATURE_NO_TITLE);
    setContentView(R.layout.activity_contact_list);
    Intent intent = getIntent();


}
public void chooseStatus(View view) {
    DialogFragment newFragment = new StatusDialogFragment();
    newFragment.show(getSupportFragmentManager(), "statuschoice");
}

最后,这是我想要打开对话框的按钮的XML代码。

    <ImageButton
    android:id="@+id/status"  
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:src="@drawable/status_available_icon"
    android:onClick="chooseStatus" />

感谢您的时间。

1 个答案:

答案 0 :(得分:2)

如果您正在为低于3.0的平台编码,则需要扩展兼容性类FragmentActivity

public class ContactList extends FragmentActivity implements OnClickListener {

如果没有,请将getSupportFragmentManager()更改为getFragmentManager()

另外,如果您使用的是FragmentActivity,请确保StatusDialogFragment扩展了支持包中的兼容性DialogFragment

如果不是(意味着您的目标只是3.0及以上),请确保您从支持包中扩展的DialogFragment班级