AlertDialog示例给出错误

时间:2013-03-02 17:11:57

标签: java android android-dialogfragment

我是Java / Android开发的新手(我昨晚开始学习)所以我完全有可能做一些非常愚蠢的事情。然而,经过一个多小时的谷歌搜索,我什么也没想出来。我正在使用Eclipse作为我的编辑。

我正在阅读AlertDialog的文档here,这是一个例子:

public static class MyAlertDialogFragment extends DialogFragment {

    public static MyAlertDialogFragment newInstance(int title) {
        MyAlertDialogFragment frag = new MyAlertDialogFragment();
        Bundle args = new Bundle();
        args.putInt("title", title);
        frag.setArguments(args);
        return frag;
    }

    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {
        int title = getArguments().getInt("title");

        return new AlertDialog.Builder(getActivity())
                .setIcon(R.drawable.alert_dialog_icon)
                .setTitle(title)
                .setPositiveButton(R.string.alert_dialog_ok,
                    new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int whichButton) {
                            ((FragmentAlertDialog)getActivity()).doPositiveClick();
                        }
                    }
                )
                .setNegativeButton(R.string.alert_dialog_cancel,
                    new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int whichButton) {
                            ((FragmentAlertDialog)getActivity()).doNegativeClick();
                        }
                    }
                )
                .create();
    }
}

我最初重写了它,所以我可以开始将一些方法提交到内存,但是出现错误“FragmentAlertDialog无法解析为类型”。我点击 Ctrl + Shift + O 以确保我有正确的导入,但它仍然没有消失。

所以我复制/粘贴了示例代码并按以下顺序执行了以下操作:

  1. Ctrl + Shift + O 以获得正确的导入(使用android.app.DialogFragment,而非android.support.v4.app.DialogFragment
  2. 在顶部宣布我的包裹
  3. 分别用R.string.alert_dialog_okR.string.alert_dialog_cancel取代android.R.string.okandroid.R.string.cancel
  4. 删除了setIcon(),因为我还没有要放入的图标
  5. 我仍然遇到错误:

    1. FragmentAlertDialog无法解析为类型(x4)
    2. 班级MyAlertDialogFragment的非法修饰符;只有publicabstract&允许final
    3. 我做错了什么,或示例代码有问题吗?

2 个答案:

答案 0 :(得分:2)

  

1.FragmentAlertDialog

确保要转换为的活动名为FragmentAlertDialog。确保还保存所有内容 - 有时Eclipse在保存所有内容之前不会建立连接。

  

2. MyAlertDialogFragment类的非法修饰符;只有公共的,抽象的和允许进入决赛

取出static修饰符:

public class MyAlertDialogFragment extends DialogFragment {

或保留static并移动此片段,使其包含在您想要的活动中。这意味着MyAlertDialogFragment应位于您的Activity中,之前该Activity的结束括号。

  

我是Java / Android开发的新手

不要从如此复杂的事情开始。了解Java,然后转到Android.

答案 1 :(得分:1)

您可以尝试使用这些代码来实现警告对话框

       AlertDialog.Builder alert2 = new AlertDialog.Builder(this);  
            alert2.setTitle("Your Title");
            alert2.setMessage("Your Messages");
            final EditText input2 = new EditText(this);
            input2.setInputType(InputType.TYPE_CLASS_PHONE);
            alert2.setView(input2);
            alert2.setPositiveButton(GButton, new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int whichButton) {
                    // Do something with value!                 
                    try
                    {
                    // do your stuff here   
                    }
                    catch(Exception e)
                    {

                    }
                } 
            });

            alert2.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int whichButton) {
                    // Canceled.
                }
            });

            alert2.show();