如何在每次单击andriod中的其他图像时更改AlertDialog中的消息?

时间:2017-04-18 10:44:06

标签: android android-alertdialog

我是android的初学者。我想在用户单击图像时显示图像描述(使用AlertDialog)。但是当我点击另一张图像时,AlertDialog框总是显示第一条保存的消息?单击其他图像时不会重置。有人请帮帮我吗?

MainActivity.java

Install-Package Svg

6 个答案:

答案 0 :(得分:3)

试试这个

如果您必须使用 .equals()检查字符串,则在使用 ==

if(imgpt1.getTag().equals("frontbumpers"))
{
     message="This is Bumper";
}
else if(imgpt1.getTag().equals("frontfenders"))
{
     message="This is Fenders";
}
else if(imgpt1.getTag().equals("frontheadlight"))
{
     message="This is headlight";
}
else if(imgpt1.getTag().equals("frontgrilles")
{
     message="This is grilles";
}

答案 1 :(得分:3)

首先,您在每个不应该是场景的情况下使用 imgpt1 。 而是使用

v.getTag.equals("xxx")

解决之后尝试使用最好的Android练习来比较字符串。

检查android(Java)中的字符串时的最佳做法首先使用

检查null和空字符串
String string1 = "abc", string2 = "Abc";
TextUtils.isEmpty(string1); // Returns true if the string is empty or null

然后使用下面提到的代码检查相同的案例

string1.equals(string2) //Checks with case sensitivity
string1.equalsIgnoreCase(string2) // Checks without case sensitivity. Here this will return true.

答案 2 :(得分:2)

onClick中使用

imgpt1.getTag().equals("frontgrilles")

而不是

imgpt1.getTag()=="frontgrilles"

答案 3 :(得分:1)

您应该检查view的标签而不是静态项目,因为它们将始终为真!看看你的第一个条件。 imgpt1标记为“frontbumpers”,因此该条件始终为真!因此它每次都显示相同的消息。

    @Override
    public void onClick(View v) {
        String message="";

//for your clarification here v is the view which was clicked ex. impt1 or 2 3 4.... or anything which has an onClick listener assigned and was click will call this method. 

        if(v.getTag()=="frontbumpers")
        {
            message="This is Bumper";
        }
        else if(v.getTag()=="frontfenders")
        {
            message="This is Fenders";
        }
        else if(v.getTag()=="frontheadlight")
        {
            message="This is headlight";
        }
        else if(v.getTag()=="frontgrilles")
        {
            message="This is grilles";
        }
}
  

**建议equals()使用==而不是String。改为`v.getTag()。equals(“someValueYouWantToCheck”)

答案 4 :(得分:1)

在onClick方法中,您使用了第一个图像用于所有if else条件,这就是为什么,无论您单击哪个图像,它都会显示第一个图像消息。

    String message="";
    if(**imgpt1.getTag()**=="frontbumpers")
    {
        message="This is Bumper";
    }
    else if(**imgpt1.getTag()**=="frontfenders")
    {
        message="This is Fenders";
    }
    else if(**imgpt1.getTag()**=="frontheadlight")
    {
        message="This is headlight";
    }
    else if(**imgpt1.getTag()**=="frontgrilles")
    {
        message="This is grilles";
    } 

答案 5 :(得分:0)

使用imgpt1.getTag().equals("string")代替imgpt1.getTag()=="string"

试试这个:

@Override
public void onClick(View v) {
    String message="";
    if(imgpt1.getTag().equals("frontbumpers"))
    {
        message="This is Bumper";
    }
    else if(imgpt1.getTag().equals("frontfenders"))
    {
        message="This is Fenders";
    }
    else if(imgpt1.getTag().equals("frontheadlight"))
    {
        message="This is headlight";
    }
    else if(imgpt1.getTag().equals("frontgrilles"))
    {
        message="This is grilles";
    }

    AlertDialog.Builder builder=new AlertDialog.Builder(MainActivity.this);
    builder.setTitle("Car Parts");
    builder.setMessage(message);
    builder.setNeutralButton("OK", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            dialog.cancel();
        }
    }).create().show();

}