繁体   English   中英

Android - 单击警报对话框内的按钮

[英]Android - Click Button Inside alertDialog

我想知道如何在 Android 中单击AlertDialog内的按钮,这是我的代码

activity_float_info.xml

<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="New Button"
    android:id="@+id/button" />

主活动.java

 QR_ = LayoutInflater.from(MainActivity.this).inflate(R.layout.activity_float_info, null);
        MAIN_QR_SCAN = (LinearLayout) findViewById(R.id.MAIN_QR_SCAN);

        MAIN_QR_SCAN.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                new AlertDialog.Builder(MainActivity.this)
                        .setCancelable(Boolean.TRUE)
                        .setNegativeButton(getString(R.string.CANCEL), new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialogInterface, int i) {
                                dialogInterface.dismiss();
                            }
                        })
                        .setView(R.layout.activity_float_info)
                        .show();

                button = (Button)QR_.findViewById(R.id.button);
                button.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View view) {
                        button.setText("TEst");
                    }
                });
            }
        });

我已经膨胀了布局..我认为主要问题是

button = (Button)QR_.findViewById(R.id.button);

试试这个为对话框创建一个布局

<TextView android:id="@+id/dialogtitle"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:gravity="center"
    android:textColor="@android:color/black"
    android:text="Please enter the email address you used for the account"
    />
<EditText
    android:id="@+id/emailedittext"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_margin="10dp"
    android:ems="10"
    android:padding="5dp"
    android:cursorVisible="true"
    android:singleLine="true"
    android:background="@android:color/white"
    android:textColor="@android:color/black"
    android:hint="Enter Mail id"
    android:textSize="20dp" >
    <requestFocus />
</EditText>

<LinearLayout android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:weightSum="2"
    android:orientation="horizontal">

     <Button 
        android:id="@+id/cancelbtn"
        android:layout_width="0dp"
        android:layout_weight="1"
        android:layout_height="wrap_content"
        android:text="CANCEL"/>

      <Button 
        android:id="@+id/okbtn"
        android:layout_width="0dp"
        android:layout_weight="1"
        android:layout_height="wrap_content"
        android:text="Ok"/>
</LinearLayout>

然后使用此布局创建一个对话框并处理按钮点击

final Dialog dialog = new Dialog(MainActivity.this);
      // Include dialog.xml file
      dialog.setContentView(R.layout.forgotpassword);
      // Set dialog title
      dialog.setTitle("ALERT!!");
      // set values for custom dialog components - text, image and button
      Button okbtn = (Button) dialog.findViewById(R.id.okbtn);
      Button cancelbtn = (Button) dialog.findViewById(R.id.cancelbtn);
      final EditText emailedittext = (EditText) dialog.findViewById(R.id.emailedittext);
      dialog.show();
      dialog.getWindow().setSoftInputMode(
              WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);
      // if decline button is clicked, close the custom dialog
      cancelbtn.setOnClickListener(new View.OnClickListener() {
          @Override
          public void onClick(View v) {
              // Close dialog
              dialog.dismiss();
          }
      });
      okbtn.setOnClickListener(new View.OnClickListener() {
          @Override
          public void onClick(View v) {
              String email=emailedittext.getText().toString();
              //do something more here
          }
      });

参考: https : //coderzpassion.com/android-show-alertdialog/

这是使用AlertDialog一个技巧:

public class CustomDialog extends AlertDialog {

    protected CustomDialog(Context context) {
        super(context);
    }
}

然后在您的活动中:

        CustomDialog dialog = new CustomDialog(this);
        View view = getLayoutInflater().inflate(R.layout.custom_dialog_layout,null);
        dialog.setView(view);
        Button button = (Button)view.findViewById(R.id.custom_button);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(YourActivity.this,"Your message", Toast.LENGTH_LONG).show();
            }
        });
        dialog.show();

以及对话框的布局(除了按钮之外没有任何内容):

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <Button
        android:id="@+id/custom_button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:text="New Button" />

</RelativeLayout>

当您单击按钮时,您应该能够看到 Toast。 希望这会有所帮助。

对话框就像一个弹出窗口,向用户显示一些选项(接受/拒绝等选项)。

使用类 android.app.Dialog 创建对话框。

使用 dialog.xml 文件创建自定义对话框布局。

示例: res/layout/dialog.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >

<ImageView
    android:id="@+id/imageDialog"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginRight="6dp" />

<TextView
    android:id="@+id/textDialog"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:textColor="#FFF"
    android:layout_toRightOf="@+id/imageDialog"/>

 <Button
    android:id="@+id/declineButton"
    android:layout_width="100px"
    android:layout_height="wrap_content"
    android:text=" Submit "
    android:layout_marginTop="5dp"
    android:layout_marginRight="5dp"
    android:layout_below="@+id/textDialog"
    android:layout_toRightOf="@+id/imageDialog"
    />

</RelativeLayout>

Java代码

// Create custom dialog object
final Dialog dialog = new Dialog(CustomDialog.this);
// Include dialog.xml file
dialog.setContentView(R.layout.dialog);
// Set dialog title
dialog.setTitle("Custom Dialog");

// set values for custom dialog components - text, image and button
TextView text = (TextView) dialog.findViewById(R.id.textDialog);
text.setText("Custom dialog Android example.");
ImageView image = (ImageView) dialog.findViewById(R.id.imageDialog);
image.setImageResource(R.drawable.image0);

dialog.show();

Button declineButton = (Button) dialog.findViewById(R.id.declineButton);
// if decline button is clicked, close the custom dialog
declineButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// Close dialog
dialog.dismiss();
}
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM