ボタンのonClickListener実装内のonClick()メソッドからEditTextにアクセスしようとしています。コードは次のとおりです。onClick()内部クラスからのプログラムデータへのアクセス
transmit.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
//data validation
///////////////////////
boolean valid = true;
if(((EditText)findViewById(R.id.drv_in)).getText().toString() == "") {
TX_FAIL_TEXT = "Missing Driver ID!";
showDialog(DIALOG_FAIL);
TX_FAIL_TEXT = "Transmission Failed!"; //reset the dialog fail text to default
valid = false;
}
Log.e("smsDRVERR",((EditText)findViewById(R.id.drv_in)).getText().toString());
//begin transmission
///////////////////////
if(valid) {
showDialog(DIALOG_TX_PROGRESS);
Thread t = new Thread(txRunnable);
t.start();
} else {
//do things if needed
}
}
});
Log.eは決して呼び出されません(logcatには表示されません)。あたかも条件文が存在しないかのようにプログラムが実行されます。 onClick実装でどのようにレイアウト項目を適切に参照するのですか?
Log.e("smsDRVERR",((EditText)smsActivity.this.findViewById(R.id.drv_in)).getText().toString());
私はSOに見つかったこの質問にに言及した:
Inside OnClickListener I cannot access a lot of things - how to approach?
が、それは問題を解決していません私はまた、次の行を試してみました。私はこの内部クラスの中でこれらの項目を参照する必要がある何かが不足している、または多分私の構文を少しジャングルしている。どんな助けもありがとう。
あなたのログ文は、条件付きの外にあるが、コードに関して無条件にログを記録する必要があります。あなたのロギングに何かが間違っているか、それをどのように見ていますか?簡単なLog.e( "a"、 "b")を試してみてください。メソッドの最初の段階で。いったん動作したら、何が間違っているのかを診断することができます。 –
ログステートメントは問題ではなく、異なるデータで動作します。これは私がこのような応答を回避することができることを確認するために投稿する前に使用したテストでした... – moonlightcheese
上記の "Log.eが呼び出されていない"を書き込みます。今度は、「ログステートメントは問題ありません」と言います。正確な情報を提供し、問題を再現するためにコードを最小限に抑えてください。 –