Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 自定义确认android对话框不工作_Java_Android - Fatal编程技术网

Java 自定义确认android对话框不工作

Java 自定义确认android对话框不工作,java,android,Java,Android,我正在学习android,我需要创建一个全局自定义的android确认对话框,用于整个应用程序,但不起作用。首先,应用程序的UI看起来像这样 按钮看起来很小,不知道我做错了什么。 这是我的布局xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android&

我正在学习android,我需要创建一个全局自定义的android确认对话框,用于整个应用程序,但不起作用。首先,应用程序的UI看起来像这样 按钮看起来很小,不知道我做错了什么。 这是我的布局xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout

    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"


    android:orientation="vertical"


    android:layout_marginRight="25dip"
    android:layout_marginLeft="25dip"
    android:background="@drawable/alert_bg">

    <TextView
        android:textColor="@color/colorStandardBlack"
        android:gravity="center"
        android:layout_marginTop="10dp"
        android:textSize="18sp"
        android:textAllCaps="true"
        android:textStyle="bold"
        android:id="@+id/text_view_confirm"
        android:text="@string/confirm"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

     <LinearLayout
         android:orientation="vertical"
         android:id="@+id/liner_confirm"
        android:background="@color/chrome_bg"

        android:layout_marginTop="8dp"
        android:layout_width="match_parent"
        android:layout_height="1dp"/>

    <TextView

        android:textColor="@color/colorStandardBlack"
        android:gravity="center"
        android:layout_marginTop="10dp"
        android:textSize="18sp"
        android:id="@+id/text_view_confirm_message"
        android:text="Lorem ipskljsdf kfjsda fkdlsja fs fdsfdsfsdfsdfsdf fsfsdfsdffdf sfsdf fksjffska fdjslkfjsdlfjslfjsdkl fksdfjklsdjfklsd"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

    <LinearLayout
        android:orientation="horizontal"
        android:layout_marginTop="10dp"
        android:layout_marginBottom="10dp"

        android:layout_width="match_parent"
        android:gravity="center"
        android:layout_height="100dp">

        <Button
            style="@style/Button_With_Radius"
            android:background="#fdcb6e"
            android:textColor="@color/white"
            android:layout_width="120dp"
            android:text="@string/cancel"
            android:id="@+id/button_cancel"
            android:textAllCaps="true"
            android:layout_height="wrap_content" />
        <Button
            style="@style/Button_With_Radius"
            android:background="#0984e3"
            android:layout_marginLeft="35dp"
            android:textColor="@color/white"
            android:text="@string/confirm"
            android:textAllCaps="true"

            android:id="@+id/button_confirm"
            android:layout_width="120dp"
            android:layout_height="wrap_content" />
    </LinearLayout>

</LinearLayout>
下面是我如何使用我的自定义对话框

boolean yes=AppUtil.confirmation(这是“您确定要这样做吗?”); Toast.makeText(这个“+”是,Toast.LENGTH_SHORT.show()//这总是返回false 下面是警报bg xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle" >

    <solid android:color="#fff" />

    <corners
        android:bottomLeftRadius="15dp"
        android:bottomRightRadius="15dp"
        android:topLeftRadius="15dp"
        android:topRightRadius="15dp" />

</shape>

我尝试了你的代码,我没有遇到按钮大小的问题:

请尝试使用接口获取响应: 希望这个链接能帮助你

如果得到任何问题回复给我,我会解释的

使用以下颜色代码:

并将背景颜色更改为以下颜色:

<color name="purple">#FF6200EE</color>
<color name="teal">#FF018786</color>
<color name="black">#FF000000</color>
创建另一个名为ConfirmDialog.java的类,该类应实现click侦听器:

public class ConfirmDialog extends Dialog implements
    android.view.View.OnClickListener {

}
现在,在此类中添加以下代码:

 public class ConfirmDialog extends Dialog implements
    android.view.View.OnClickListener {

    public Activity activity;
    private DialogClickListener listener;
    public Button yes, no;

    public ConfirmDialog(Activity activity, DialogClickListener listener) {
        super(activity);
        this.activity = activity;
        this.listener = listener;
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.dialog_confirm);
        yes = (Button) findViewById(R.id.btn_yes);
        no = (Button) findViewById(R.id.btn_no);

        yes.setOnClickListener(this);
        no.setOnClickListener(this);

    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.btn_yes:
                listener.onPositiveButtonClick();
                break;
            case R.id.btn_no:
                listener.onNegativeButtonClick();
                break;
            default:
                break;
        }
        dismiss();
    }
}
对话框布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:padding="40dp"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/txt_dia"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:text="Please explain your action here"
        android:textColor="@color/theme_blue"
        android:textSize="18dp"
        android:textStyle="bold"/>


    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:layout_marginTop="30dp"
        android:background="@color/white"
        android:orientation="horizontal" >

        <Button
            android:id="@+id/btn_yes"
            android:layout_width="120dp"
            android:layout_height="wrap_content"
            android:background="@android:color/white"
            android:clickable="true"
            android:layout_marginEnd="10dp"
            android:text="@string/continue_text"
            android:textColor="@color/white"
            android:textStyle="normal" />

        <Button
            android:id="@+id/btn_no"
            android:layout_width="120dp"
            android:layout_height="wrap_content"
            android:layout_marginStart="10dp"
            android:background="@android:color/white"
            android:clickable="true"
            android:text="@string/cancel"
            android:textColor="@color/white"
            android:textStyle="normal" />
    </LinearLayout>

</LinearLayout>
演示图像:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:padding="40dp"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/txt_dia"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:text="Please explain your action here"
        android:textColor="@color/theme_blue"
        android:textSize="18dp"
        android:textStyle="bold"/>


    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:layout_marginTop="30dp"
        android:background="@color/white"
        android:orientation="horizontal" >

        <Button
            android:id="@+id/btn_yes"
            android:layout_width="120dp"
            android:layout_height="wrap_content"
            android:background="@android:color/white"
            android:clickable="true"
            android:layout_marginEnd="10dp"
            android:text="@string/continue_text"
            android:textColor="@color/white"
            android:textStyle="normal" />

        <Button
            android:id="@+id/btn_no"
            android:layout_width="120dp"
            android:layout_height="wrap_content"
            android:layout_marginStart="10dp"
            android:background="@android:color/white"
            android:clickable="true"
            android:text="@string/cancel"
            android:textColor="@color/white"
            android:textStyle="normal" />
    </LinearLayout>

</LinearLayout>


完成

我尝试了你的代码,我没有遇到按钮大小问题:

请尝试使用接口获取响应: 希望这个链接能帮助你

如果得到任何问题回复给我,我会解释的

使用以下颜色代码:

并将背景颜色更改为以下颜色:

<color name="purple">#FF6200EE</color>
<color name="teal">#FF018786</color>
<color name="black">#FF000000</color>
创建另一个名为ConfirmDialog.java的类,该类应实现click侦听器:

public class ConfirmDialog extends Dialog implements
    android.view.View.OnClickListener {

}
现在,在此类中添加以下代码:

 public class ConfirmDialog extends Dialog implements
    android.view.View.OnClickListener {

    public Activity activity;
    private DialogClickListener listener;
    public Button yes, no;

    public ConfirmDialog(Activity activity, DialogClickListener listener) {
        super(activity);
        this.activity = activity;
        this.listener = listener;
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.dialog_confirm);
        yes = (Button) findViewById(R.id.btn_yes);
        no = (Button) findViewById(R.id.btn_no);

        yes.setOnClickListener(this);
        no.setOnClickListener(this);

    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.btn_yes:
                listener.onPositiveButtonClick();
                break;
            case R.id.btn_no:
                listener.onNegativeButtonClick();
                break;
            default:
                break;
        }
        dismiss();
    }
}
对话框布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:padding="40dp"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/txt_dia"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:text="Please explain your action here"
        android:textColor="@color/theme_blue"
        android:textSize="18dp"
        android:textStyle="bold"/>


    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:layout_marginTop="30dp"
        android:background="@color/white"
        android:orientation="horizontal" >

        <Button
            android:id="@+id/btn_yes"
            android:layout_width="120dp"
            android:layout_height="wrap_content"
            android:background="@android:color/white"
            android:clickable="true"
            android:layout_marginEnd="10dp"
            android:text="@string/continue_text"
            android:textColor="@color/white"
            android:textStyle="normal" />

        <Button
            android:id="@+id/btn_no"
            android:layout_width="120dp"
            android:layout_height="wrap_content"
            android:layout_marginStart="10dp"
            android:background="@android:color/white"
            android:clickable="true"
            android:text="@string/cancel"
            android:textColor="@color/white"
            android:textStyle="normal" />
    </LinearLayout>

</LinearLayout>
演示图像:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:padding="40dp"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/txt_dia"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:text="Please explain your action here"
        android:textColor="@color/theme_blue"
        android:textSize="18dp"
        android:textStyle="bold"/>


    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:layout_marginTop="30dp"
        android:background="@color/white"
        android:orientation="horizontal" >

        <Button
            android:id="@+id/btn_yes"
            android:layout_width="120dp"
            android:layout_height="wrap_content"
            android:background="@android:color/white"
            android:clickable="true"
            android:layout_marginEnd="10dp"
            android:text="@string/continue_text"
            android:textColor="@color/white"
            android:textStyle="normal" />

        <Button
            android:id="@+id/btn_no"
            android:layout_width="120dp"
            android:layout_height="wrap_content"
            android:layout_marginStart="10dp"
            android:background="@android:color/white"
            android:clickable="true"
            android:text="@string/cancel"
            android:textColor="@color/white"
            android:textStyle="normal" />
    </LinearLayout>

</LinearLayout>

完成

}



}

您能分享本网站内使用的剩余资源吗。。。我正试图找出问题所在,但他们的一些资源缺失…@hafiza你需要什么资源?警报是missing@hafiza我已经包括了我发现,首先,我没有得到按钮大小的问题,但您的实现方式是不正确的。首先你得到响应,然后你进入响应,所以每次你得到初始化的响应。你能分享剩余的资源吗,在这里面使用。。。我正试图找出问题所在,但他们的一些资源缺失…@hafiza你需要什么资源?警报是missing@hafiza我已经包括了我发现,首先,我没有得到按钮大小的问题,但您的实现方式是不正确的。首先你们得到的是响应,然后你们输入的是响应,所以每次你们得到的是初始化响应。为什么我的代码不能工作呢?我无法理解您正在测试的是哪台设备?请尝试将您的颜色更改为我将更新的颜色。我正在使用simulatorI我正在使用真实设备。如果您想使用自定义可重用对话框,请创建单独的对话框类,如果您有兴趣从我这里获得更多信息,我将在回答中添加剩余的解释。为什么我的代码不起作用?我无法理解您正在测试的是哪台设备?请尝试将您的颜色更改为我将更新的颜色。我正在使用simulatorI我正在使用真实设备。如果您想使用自定义可重用对话框,请创建单独的对话框类,如果您有兴趣从我这里获得更多信息,我将在答案中添加剩余的解释。不知道kotlin我将如何在javasure中这样做,检查我编辑的答案不知道kotlin我将如何在javasure中这样做,检查我编辑的答案
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    showDialog(new OnConfirmDialogClicked() {
        @Override
        public void onDialogButtonClicked(Boolean isConfirmed) {
            if(isConfirmed){
                // write your logic
            }else{
                // write your logic
            }
        }
    });
}

private void showDialog(OnConfirmDialogClicked onConfirmDialogClicked){
    Dialog dialog = new Dialog(this);
    dialog.setContentView(R.layout.dialog_layout);
    Button btnConfirm = dialog.findViewById(R.id.btnConfirm);
    Button btnCancel = dialog.findViewById(R.id.btnCancel);
    btnConfirm.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            dialog.dismiss();
            onConfirmDialogClicked.onDialogButtonClicked(true);
        }
    });
    btnCancel.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            dialog.dismiss();
            onConfirmDialogClicked.onDialogButtonClicked(false);
        }
    });
    dialog.show();
    
}
interface OnConfirmDialogClicked{
    void onDialogButtonClicked(Boolean isConfirmed);
}