繁体   English   中英

onItemClick中的Android Studio AlertDialog

[英]Android Studio alertDialog in onItemClick

我在Android Studio中使用一个简单的应用程序时遇到了一个小问题,该应用程序很简单,您单击一种颜色,背景更改为该颜色,但是我想添加一个alertDialog,以便它在更改为该颜色之前询问。
当我单击一种颜色时,会出现对话框,但是没有更改颜色的操作,我希望它停止,因此,如果选择“是”,它将继续,如果选择“否”,则不会更改颜色。 单击“否”后,我不知道如何取消操作。

这是MainActivity中的代码:

 @Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
    AlertDialog.Builder builder=new AlertDialog.Builder(this);
    builder.setMessage("Are you sure you want to choose this color?")
            .setTitle("Change color")
            .setPositiveButton("Yes", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialogInterface, int i) {
                    dialogInterface.cancel();
                }
            })
            .setNegativeButton("No", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialogInterface, int i) {

                }
            });
    builder.create().show();

    String msg=((TextView) view).getText().toString();
    ShowMessage(msg);

    int[]colorsCodes = new int[]{
            getResources().getColor(R.color.White),
            getResources().getColor(R.color.Black),
            getResources().getColor(R.color.Red),
            getResources().getColor(R.color.Blue),
            getResources().getColor(R.color.Green),
            getResources().getColor(R.color.Yellow),
            getResources().getColor(R.color.Orange),
            getResources().getColor(R.color.Pink),
            getResources().getColor(R.color.Violet),
            getResources().getColor(R.color.Brown)};



    myListView.setBackgroundColor(colorsCodes[i]);

编辑:
我添加了myListView.setBackgroundColor(colorsCodes[i]); 警报对话框的“是”选项中的“函数”,并且还在onItemClick()外部声明了ColorCodes,除非我单击“是”,否则应用程序都会崩溃...

 AlertDialog.Builder builder=new AlertDialog.Builder(this);
    builder.setMessage("Are you sure you want to choose this color?")
            .setTitle("Change color")
            .setPositiveButton("Yes", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialogInterface, int i) {
                    myListView.setBackgroundColor(colorsCodes[i]);

                }
            })
            .setNegativeButton("No", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialogInterface, int i) {

                }
            });

编辑:谢谢,我现在解决了,问题是该功能

public void onItemClick(AdapterView<?> adapterView, View view, final int i, long l) {

正在接受int i以及“ yes”选项,因此我将其重命名为j

public void onClick(DialogInterface dialogInterface, int j) {
                    myListView.setBackgroundColor(colorsCodes[i]);

                }

您必须放置换色功能

myListView.setBackgroundColor(colorsCodes[i]);

在setPositiveButton函数的onClick函数中。 您可以在setNegativeButton函数中将其留空。

PS-不要忘记在onItemClick函数之前定义colorsCodes。

暂无
暂无

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

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