【问题标题】:Android onClick on possitive buttonAndroid onClick 正面按钮
【发布时间】:2013-07-24 22:52:37
【问题描述】:

我对 onClick 监听器有一个小问题。 我有一个带有正面和负面按钮的对话框,正面按钮应该像这样工作:

if( statement == true ) -> 点击肯定按钮会做一些事情 并且 if( statement == false ) -> 点击肯定按钮将显示 Toast.makeText() 但这不会关闭对话框窗口。

提前致谢!

【问题讨论】:

标签: android button click


【解决方案1】:

您需要调用 close 方法才能关闭它。将此行放在 pos/neg 按钮侦听器的最后一行:

dialog.cancel();

其中 dialog 是作为参数传递的 DialogInterface 的实例。在

DialogInterface.OnClickListener.onClick(DialogInterface ,int);

更新:

builder.setNeutralButton( "Ustaw", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int id) {
                        getRecurrence( whichType, finishType );
                        if( isRecurrenceProperlySet ) {
                                //do some stuff

                        }
                        else {
Toast.makeText( contextThemeWrapper, "Set data!", Toast.LENGTH_SHORT ).show();
}
 dismiss();
                }
        });

正如我之前所说,将该行移至侦听器的最后一行。

【讨论】:

  • 如果我同时点击正面和负面按钮,我的 AlertDialog 会立即关闭,但我想检查我的陈述是否为真/假,然后如果为假 - > 将会有 Toast 并且仍然打开对话框,如果真正的对话框将关闭
【解决方案2】:

试试这个

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.layout);
    findViewById(R.id.test).setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            show();
        }
    });

}

AlertDialog alertDialogBox;
private OnClickListener clickListner = new OnClickListener() {
    @Override
    public void onClick(View v) {
        show();
    }
};
private boolean conditionVal = false;

public void show() {

    AlertDialog.Builder b = new AlertDialog.Builder(this);
    alertButtonValue = false;
    b.setNegativeButton("YES", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
        }
    });
    b.setPositiveButton("No", new DialogInterface.OnClickListener() {

        @Override
        public void onClick(DialogInterface dialog, int which) {

        }
    });
    this.alertDialogBox = b.create();
    this.alertDialogBox.setTitle("Helllo");
    this.alertDialogBox.setMessage("message...");

    alertDialogBox.setOnShowListener(new DialogInterface.OnShowListener() {
        @Override
        public void onShow(DialogInterface dialog) {
            if (alertButtonValue == false) {
                Button button = alertDialogBox
                        .getButton(DialogInterface.BUTTON_NEGATIVE);
                button.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        if (!conditionVal)
                            Toast.makeText(getApplicationContext(),
                                    "Condition not satisfied",
                                    Toast.LENGTH_SHORT).show();
                    }
                });
                alertButtonValue = true;
            } else {
                Toast.makeText(getApplicationContext(), "Hello",
                        Toast.LENGTH_SHORT).show();
            }
        }
    });
    this.alertDialogBox.show();
}

private boolean alertButtonValue = false;

【讨论】:

    猜你喜欢
    • 2016-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-04
    相关资源
    最近更新 更多