如何让DialogPreference POSITIVE_BUTTON在OnClick上运行?

时间:2014-04-22 02:25:48

标签: java android events mobile onclick

我试图用DialogPrefence来设置密码来设置密码。 如何从对话框确定按钮获取onClick()事件?

以下是代码:

package com.kontrol.app;

import android.content.Context;
import android.content.DialogInterface;
import android.preference.DialogPreference;
import android.util.AttributeSet;

public class SS1_Senha extends DialogPreference implements DialogInterface.OnClickListener{

    public SS1_Senha(Context context, AttributeSet attrs) {
        super(context, attrs);
        setPersistent(false);
        setDialogLayoutResource(R.layout.ss1_senha);

        setPositiveButton("Ok", new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int id) {
                //Action after OK

            }
        });


    }
}

3 个答案:

答案 0 :(得分:13)

您需要实施DialogInterface.OnClickListener并处理每个按钮的OnClick事件

像这样创建一个自定义DialogPreference

public class CustomDialogPreference extends DialogPreference implements DialogInterface.OnClickListener{

public CustomDialogPreference(Context context, AttributeSet attrs) {
    super(context, attrs);
    setPersistent(false);
    setDialogLayoutResource(R.layout.image_dialog);
    setPositiveButtonText("OK");
    setNegativeButtonText("CANCEL");
}

@Override
public void onClick(DialogInterface dialog, int which){
    if(which == DialogInterface.BUTTON_POSITIVE) {
        // do your stuff to handle positive button
    }else if(which == DialogInterface.BUTTON_NEGATIVE){
        // do your stuff to handle negative button
    }
 }
}

答案 1 :(得分:0)

要显示警告对话框,您可以使用AlertDialog.builder。 例如:

AlertDialog alertDialog = new AlertDialog.Builder(
                        AlertDialogActivity.this).create();

    // Setting Dialog Title
    alertDialog.setTitle("Alert Dialog");

    // Setting Dialog Message
    alertDialog.setMessage("My Message");


    // Setting OK Button
    alertDialog.setButton("OK", new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int which) {
            // Write your code here to execute after dialog closed
            Toast.makeText(getApplicationContext(), "You clicked on OK", Toast.LENGTH_SHORT).show();
            }
    });

    // Showing Alert Message
    alertDialog.show();

答案 2 :(得分:0)

如果我理解正确,你需要知道另一个类中的按键事件(不在SS1_Senha中)。为此,您可以使用侦听器(观察者)模式或处理程序。