我在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]);
编辑:
我在&#34;是&#34;中添加了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) {
正在接受我和#34;是&#34;选项,所以我只是将其重命名为j
public void onClick(DialogInterface dialogInterface, int j) {
myListView.setBackgroundColor(colorsCodes[i]);
}
答案 0 :(得分:1)
您必须放置换色功能
myListView.setBackgroundColor(colorsCodes[i]);
在setPositiveButton函数的onClick函数内。你可以在setNegativeButton函数中留空。
P.S.-不要忘记在onItemClick函数之前定义colorsCodes。