【问题标题】:Why if statement is not working in Java/Android?为什么 if 语句在 Java/Android 中不起作用?
【发布时间】:2017-07-13 12:53:11
【问题描述】:

我正在创建一个 Android 程序,当单击按钮时,它会检查 2 个图像是否相同(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!");
    }
}

但是,当我单击按钮时,即使图像相同,程序也会显示“不幸”。所以它完全无视我的“if-statement”。

这是我的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"/>

如果您在理解问题方面需要进一步帮助,请告诉我。

【问题讨论】:

  • 你比较标签,你在xml中使用不同的标签
  • 那么标签一定要一样吗?
  • 你清楚地比较两个字符串,因为它们必须相同

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


【解决方案1】:

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

您将标签 EmojiiconTextView 设置为

android:tag="myTag"

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

android:tag="myTag2"

您正在使用与

相同的方法比较标签
 if (input.equals(input2)) {
    checkingText.setText("Well Done!");
} 

他们怎么可能是平等的? :)

希望这是有道理的。

【讨论】:

  • 那你是说我的标签必须一样?
  • 我并不是说它们必须相等。我指出你在做错事。您的测试条件语句表明它们必须相同才能通过相等的测试。
  • 哦,我明白了。那么有没有正确的方法来做到这一点并让他们进行比较? :)
  • 但是,我的代码仍然无法按照我想要的方式运行 :)
  • 我想比较一下 ImageView 和 EmojiconTextView。我希望我的程序查看它们是相同的图像还是不同的图像。看到 ImageView 显示一个随机图像,然后用户选择另一个图像。如果用户选择了正确的图像(ImageView 和 EmojiconTextView 中的图像是相等的,那么它必须说“Well Done”,否则如果用户错误,那么它必须显示“Unlucky”:)
【解决方案2】:

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

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

您将总是比较在您的 xml 文件中设置的标签。为了解决这个问题,您是否设置了将在 Java 代码中为 ImageView 显示的可绘制对象?

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

这样,您可以拥有某种地图HashMap&lt;Drawable, String&gt; map,并且当您选择要在图像视图中使用的 Drawable 时,您会自动设置标签。

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

【讨论】:

    【解决方案3】:

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

    【讨论】:

      【解决方案4】:
      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!");
          }
      }
      

      【讨论】:

      • 它说“不兼容的类型”
      • 我已经尝试了你编辑的答案,它'parseInt (java.lang.String) in Integer cannot be applied to (java.lang.Object)
      【解决方案5】:

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

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

      【讨论】:

      • 不幸的是,这个问题是一个摄像头图像,这些不是 2 个摄像头图像。
      猜你喜欢
      • 2014-01-17
      • 2021-11-14
      • 1970-01-01
      • 2021-01-28
      • 1970-01-01
      • 2022-12-04
      • 1970-01-01
      • 2012-07-21
      • 1970-01-01
      相关资源
      最近更新 更多