2013-03-02 157 views
4

我是Java/Android开发新手(我昨晚开始学习),所以完全有可能我正在做一些可怕的愚蠢的事情。然而,经过一个多小时的谷歌搜索,我什么都没有得到。我使用Eclipse作为我的编辑器。AlertDialog示例给出的错误

我读的文档hereAlertDialog,这给出了一个例子:

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 + + Ø得到进口权(使用android.app.DialogFragment,不android.support.v4.app.DialogFragment
  2. 顶部
  3. android.R.string.ok的替换R.string.alert_dialog_okR.string.alert_dialog_cancel宣布我的包d android.R.string.cancel分别为
  4. 删除setIcon(),因为我没有一个图标放置在尚未

我仍然得到错误:

  1. FragmentAlertDialog不能被解析为一个类型(X4)
  2. 该级别的非法修饰符MyAlertDialogFragment;只有publicabstract & final允许

我做得不对,或者是有什么错示例代码?

+0

这是否是单独的类或内部类FragmentAlertDialog的? – 2013-03-02 17:15:41

+0

你能用你的解决方案更新吗?我也卡在这里... – Lion789 2014-02-10 23:23:13

回答

2

1.FragmentAlertDialog

确保您要投射到被命名为FragmentAlertDialog活动。确保也保存所有内容 - 有时候Eclipse将不会建立连接,直到所有内容都保存完毕。

2.类MyAlertDialogFragment的非法修饰符;只有公开,抽象&最终被允许

取出static修改:

public class MyAlertDialogFragment extends DialogFragment { 

或保持static,所以它是你想要的活动中封闭的移动这个片段。这意味着MyAlertDialogFragment应该在你的活动中,之前表示活动的大括号。

我是新来的Java/Android开发

不要的东西很复杂开始。了解Java然后移动到Android.

+1

谢谢。我原本拿出静态,但我觉得这是有原因的。 至于有一个活动'FragmentAlertDialog' - 我没有这样的活动。这就是为什么。在文档中没有任何地方(至少,我没有看到)提到它。 – Aeisor 2013-03-02 17:22:04

+0

@Aeisor如果你确实做了FragmentAlertDialog Activity,确保有'doPositiveClick()'和'doNegativeClick()'方法并确保你的Fragment只附加到那个Activity。另外,一个很好的跟随片段的教程是[this](http://www.vogella.com/articles/AndroidFragments/article.html) – 2013-03-02 17:27:19

+1

因为这是创建一个适合所有人的消息对话框(即 - “你已经完成了一个动作!干得好,现在点击确定”)我已经删除了该活动的需要。 doPositiveClick方法将在相同的泛型类中声明,以简单地关闭对话框。 感谢您的帮助。 – Aeisor 2013-03-02 17:45:26

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(); 
+0

我尝试了各种其他类似的答案,但我一直在Builder实例化中遇到异常。这个解决方案虽然做了诀窍 - 非常感谢你的解决方案和完整的源代码。 – gnB 2014-05-14 18:20:30