2017-07-12 13 views
-5

私は他の類似した質問を私のタイトルに探しました。しかし、それらの答えのどれも働かない。Javaの文字列を比較できません

public void clickedCheck(View view) { 

    String input = emojiconTextView.getText().toString(); 
    String input2 = myRandomImage.getDrawable().toString(); 

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

ただし、テキストは「うまく完了!」に変更されません。私が置いたデフォルト値にとどまります。

私はEmojiconTextViewオブジェクトをImageViewオブジェクトと比較しています。 2つの画像が等しい場合は、「Well Done!」と表示されます。 EmojiconTextViewは、私が追加したGradleの依存関係とライブラリからのものです。

+4

を使用してみてください画像

<ImageView ... android:tag="some tag" /> 

のタグを設定します。画像へのドロウアブル – tyczj

+3

'input'と' input2'の両方の値を出力すると、それはなぜ等しくないのか分かります –

+0

@tyczj - そうする方法はありませんか? – MSP

答えて

2

TextViewのテキスト値を比較し、それを文字列にし、drawableのテキスト表現を作成するからです。

DrawableでtoStringを呼び出すと、Drawableの代わりにDrawableの文字列表現が返されます。したがって、文字列は決して等しくはありません。

//this is the string value of whatever is in the textview 
String input = emojiconTextView.getText().toString(); 
// this is the text representation of a drawable. not the name of the drawable 
String input2 = myRandomImage.getDrawable().toString(); 

はこの `myRandomImage.getDrawable()`ありえないが、あなたのemojiconTextViewに持っているものであることを行っているためmyRandomImage.getTag().toString()

+0

ありがとう、あなたの答えは正しいです! – MSP

+0

しかし、画像が等しくない場合は、どうすれば "Unlucky"と表示させるのですか? – MSP

+0

@MSP if文の閉じ括弧を '} else {checkingText.setText(" Unlucky ");}に置き換えてください。 } ' – Dewick47

0

"drawable"を取得してtoStringメソッドを使用しようとすると、期待しているもの以外のものが得られる可能性が高いと思います。確かに、それを試していない..しかし、経験から、それは "getDrawable"のtoStringメソッドを使用すると、何か変なことが起こっているようだ。デバッグしてinput2の値をチェックするかどうかが分かります。ちょうど私の.02セント。

+0

これはコメントのように聞こえる。答えではありません。 – GhostCat

+0

ええ、私は知っていますが、明らかにコメントをするには50の評価ポイントが必要です。 –