final View DialogView=factory.inflate(R.layout.dialogv,null);
        final EditText Text1 = (EditText)DialogView.findViewById(R.id.et_num);
        new AlertDialog.Builder(this).setTitle("请输入一个数字")
        .setIcon(android.R.drawable.ic_dialog_info)
        .setView(DialogView)
        .setPositiveButton("确定", new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                                /* LayoutInflater factory=LayoutInflater.from(GuessNumberGameActivity.this);
                             EditText et=(EditText)factory.inflate(R.id.et_num,null);*/
                                //et = (EditText)findViewById(R.id.et_num);
                                String str = Text1.getText().toString();
                                if("".equals(str) || str == null){
                                        new AlertDialog.Builder(DialogView.getContext()).setTitle("请输入数字哦").setPositiveButton("确定",new DialogInterface.OnClickListener() {
                                                @Override
                                                public void onClick(DialogInterface dialog, int which) {
        //这里要继续弹出第一个输入对话框
                                                }
                                        }).show();
                                        return;
                                }
                                Toast.makeText(DialogView.getContext(),str,Toast.LENGTH_SHORT );
                                Log.i("inputStr",str);
                                Log.i("intflag",new Integer(flag).toString());
                                
                        }
                })
        .show();
以上代码片段,弹出一个输入对话框用户输入一个数字然后确定,如果输入的内容为空则弹出第二个对话框提示用户“请输入数字”,然后点击确定的时候之前弹出的输入对话框要继续调用出来(注释中有说明)请教如何实现。

解决方案 »

  1.   

    如果改为
    final AlertDialog.Builder builder = new AlertDialog.Builder(this);
    在注释处添加
    builder.show();
    程序崩溃...
      

  2.   

    在注释处添加
    builder.show();程序崩溃是由于  The specified child already has a parent  按你的需求解决:
    public void onTest(){   //+++++++++++
       //弹出对话框的所有信息  
       final View DialogView=factory.inflate(R.layout.dialogv,null);
        .....
        new AlertDialog.Builder(DialogView.getContext()).setTitle("请输入数字哦").setPositiveButton("确定",new DialogInterface.OnClickListener() {
                                                    @Override
      public void onClick(DialogInterface dialog, int which) {
            onTest();//+++++++++++++
                  }}).show();
        ......
       .show();
    }
    一句话  把弹出输入信息框的整段代码 放在一个方法里  在你注释处调用这个方法就ok了。
      

  3.   

    第二层的对话框不要用setPositiveButton。用setNegativeButton试试
      

  4.   


    正解!是否还有更好的方法来管理dialog?望指点!
      

  5.   


     我做过一个是先弹出一个DialogView,里面放了一张图片和两个按钮(删除、返回),点删除后会再弹出一个框提示是否确定删除,确定就返回到最上层的界面,取消就返回到上一层的对话框。跟你要的功能类似吧?
      

  6.   

    其实如果这样觉得麻烦的话,可以将一个Activity以Dialog的形式显示出来,然后在Activity上面再控制Dialog就简单多了,只需要在Manifest.xml里面对应的Activity节点加上android:theme="Theme.Dialog"就可以让该Activity以Dialog的形式显示在界面上了。
      

  7.   


    类似,但是如您所述将第二层对话框改为用setNegativeButton试过了还是不行。呵呵。