为什么if语句在Java / Android中不起作用?

时间:2017-07-13 12:53:12

标签: java android if-statement tags android-imageview

我正在创建一个Android程序,当点击一个按钮时,它会检查这两个图像是否相同(ImageViewEmojiconTextView)。 EmojiconTextView来自我在我的应用中使用的库。

public void clickedCheck(View view) {

    String input = emojiconTextView.getTag().toString();
    String input2 = myRandomImage.getTag().toString();

    if (input.equals(input2)) {
        checkingText.setText("Well Done!");
    } else {
            checkingText.setText("Unlucky!");
    }
}

然而,当我点击按钮时,程序会显示" Unlucky"即使图像相同。所以它完全无视我的if语句'。

这是我的ImageView属性:

<ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/myRandomImage"
        android:tag="myTag2"
        android:layout_above="@+id/emojicon_text_view"
        android:layout_centerHorizontal="true"/>

这是来自我的EmojiconTextView

<hani.momanii.supernova_emoji_library.Helper.EmojiconTextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/emojicon_text_view"
        android:textColor="@android:color/black"
             android:textAppearance="@style/TextAppearance.AppCompat.Large"
        android:text="Emojicon Text View"
        android:layout_centerVertical="true"
        android:layout_centerHorizontal="true"
        android:tag="myTag"
        android:layout_marginTop="26dp"/>

如果您需要进一步帮助理解问题,请告知我们。

5 个答案:

答案 0 :(得分:3)

因为您在xml代码中使用了不同的标记。见下文

您正在将标记EmojiiconTextView设置为

android:tag="myTag"

另一方面,您将ImageView上的标记设置为

android:tag="myTag2"

您正在使用相同的方法比较标签

 if (input.equals(input2)) {
    checkingText.setText("Well Done!");
} 

他们怎么能平等? :)

希望这是有道理的。

答案 1 :(得分:1)

就像@AbulWaheed所说,因为你每次都在xml资源文件中设置你的标签

 if (input.equals(input2)) {
    checkingText.setText("Well Done!");
} else {
        checkingText.setText("Unlucky!");
}

您将始终比较在xml文件中设置的标记。要解决这个问题,您是否设置了将在Java代码中显示ImageView的drawable?

如果你是,你也可以用imageview.setTag("tagName")设置标签,因为我假设有emojiView和imageView。

这样,您可以使用某种地图HashMap<Drawable, String> map,当您选择要在imageview中使用的Drawable时,您会自动设置标记。

String tag = map.get(Drawable)
imageview.setTag(tag)

答案 2 :(得分:0)

可能是new String("myTag").equals("myTag2")假的吗? 尝试打印input1和input2来证实。

答案 3 :(得分:0)

public void clickedCheck(View view) {

    int input = Integer.parseInt(emojiconTextView.getTag());
    int input2 = Integer.parseInt(myRandomImage.getTag());

    if (input == input2) {
        checkingText.setText("Well Done!");
    } else {
        checkingText.setText("Unlucky!");
    }
}

答案 4 :(得分:0)

您正在比较标签而不是比较图像。

查看此链接,了解如何比较两张图片: - compare two images in android