【问题标题】:Creating a Dialog after an onClick event在 onClick 事件之后创建一个对话框
【发布时间】:2013-10-18 17:29:59
【问题描述】:

您好,我是第一次使用对话框。 我想在单击 listView 中的项目后创建一个对话框:

    String[] listItems = {"Colour", "Font Size",};
    ListView lv = (ListView) findViewById(R.id.settings_list);

    lv.setAdapter(new ArrayAdapter<String>
    (this, android.R.layout.simple_list_item_1, listItems));

    lv.setOnItemClickListener(new OnItemClickListener()
    {
        public void onItemClick(AdapterView<?> parent, View
                view, int position, long id)
        {
            String[] listItems = {"Colour", "Font Size",};
            if(listItems[position].equals("Font Size"))
            {


                    public dialog onCreateDialog(Bundle savedInstanceState)
                    {
                        AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
                        builder.setTitle("Choose Font Size");
                    }



            }

        }
    });

我在 onCreateDialog(Bundle savedInstanceState) 收到错误 Eclipse 想要一个 ;围绕Bundle savedInstanceState,但developer.android另有说明。 有什么建议吗?

【问题讨论】:

    标签: java android dialog onclick


    【解决方案1】:

    在你的 onItemClick 方法中调用这个方法:

     public void showMyCustomDialog(Context context, String title, String message)
        {
            final Dialog dialog = new Dialog(context);
            dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
            //tell the Dialog to use the customalertdialog.xml as it's layout description
            dialog.setContentView(R.layout.customalertdialog);
            TextView titleText = (TextView) dialog.findViewById(R.id.txtTitleAlertDialog);
            titleText.setText(title);
            TextView txt = (TextView) dialog.findViewById(R.id.txtAlertDialog);
            txt.setText(message);
            Button dialogButton = (Button) dialog.findViewById(R.id.buttonAlertDialogCancel);
            dialogButton.setText("OK");
            dialogButton.setOnClickListener(new View.OnClickListener() 
            {
                @Override
                public void onClick(View v) {
                    dialog.dismiss();
                }
            });
            dialog.show();
        }
    

    如下所示:

    lv.setOnItemClickListener(new OnItemClickListener()
        {
            public void onItemClick(AdapterView<?> parent, View
                    view, int position, long id)
            {
                String[] listItems = {"Colour", "Font Size",};
                if(listItems[position].equals("Font Size"))
                {
                        public dialog onCreateDialog(Bundle savedInstanceState)
                        {
                            showMyCustomDialog(Context context, String title, String message) // pass title, message and activity context in this method.
                        }
                }
            }
        });
    

    希望它会有所帮助。

    【讨论】:

      【解决方案2】:

      移动

       public dialog onCreateDialog(Bundle savedInstanceState) {
           AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
           builder.setTitle("Choose Font Size");
       }
      

      int 类作用域,并从onItemClick 调用它

      【讨论】:

      • 这听起来很有趣,但我如何在 onItemClick 中调用它?
      • onCreateDialog(null);例如?
      【解决方案3】:

      随便用

      public void onItemClick(AdapterView<?> parent, View
                  view, int position, long id)
          {
              String[] listItems = {"Colour", "Font Size",};
              if(listItems[position].equals("Font Size"))
              {
      
      
                          AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
                          builder.setTitle("Choose Font Size").show();
      
      
              }
      
          }
      

      【讨论】:

      • 然后我得到一个错误,即 getActivity() 未定义类型 new AdapterView.OnItemClickListener(){}
      【解决方案4】:

      试试这个

      String[] listItems = {"Colour", "Font Size",};
      ListView lv = (ListView) findViewById(R.id.settings_list);
      
      lv.setAdapter(new ArrayAdapter<String>
      (this, android.R.layout.simple_list_item_1, listItems));
      
      lv.setOnItemClickListener(new OnItemClickListener()
      {
          public void onItemClick(AdapterView<?> parent, View
                  view, int position, long id)
          {
              String[] listItems = {"Colour", "Font Size",};
              if(listItems[position].equals("Font Size"))
              {
      
      
                  AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(
                  getApplicationContext());
      
                  // set title
                  alertDialogBuilder.setTitle("Choose Font Size");
      
                  //create alert dialog
                  AlertDialog alertDialog = alertDialogBuilder.create();
      
                  // show it
                  alertDialog.show();
      
              }
      
          }
      });
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-04-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多