Ich habe ein Ereignis-Listener für zwei Tasten und Ereignis-Listener für einen EditText Kontrolle in meinem Java-Code ein:Android Studio Anonym Klasse auch Zuhörer nicht
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="New Button"
android:id="@+id/buttonA"
android:layout_below="@+id/button6"
android:layout_toLeftOf="@+id/button6"
android:layout_toStartOf="@+id/button6"
android:layout_marginTop="119dp"
android:drawableLeft="@drawable/abc_ic_star_black_16dp" />
<Button
style="?android:attr/buttonStyleSmall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="New Button"
android:id="@+id/buttonB"
android:layout_alignBottom="@+id/buttonA"
android:layout_alignRight="@+id/button6"
android:layout_alignEnd="@+id/button6" />
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/userText"
android:layout_above="@+id/buttonB"
android:layout_alignLeft="@+id/buttonA"
android:layout_alignStart="@+id/buttonA"
android:imeOptions="actionGo"
android:inputType="text"
android:layout_alignRight="@+id/buttonB"
android:layout_alignEnd="@+id/buttonB" />
:
public void doNewButtonClick(View view) {
View.OnClickListener onSnap = new View.OnClickListener() {
@Override
public void onClick(View view) {
TextView calculatorTextView = (TextView) findViewById(R.id.textView);
calculatorTextView.setText("GO TO SLEEP");
Log.d(TAG, "In the Handler for NEW BUTTONS");
}
};
Button button1 = (Button) findViewById(R.id.buttonA);
Button button2 = (Button) findViewById(R.id.buttonB);
button1.setOnClickListener(onSnap);
button2.setOnClickListener(onSnap);
}
public void onEditTextInput(View view){
EditText myMessage = (EditText) findViewById(R.id.userText);
myMessage.setOnEditorActionListener(new OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView textView, int actionID, KeyEvent event) {
Log.d(TAG, "BEFORE THE SEND");
EditText userMessage = (EditText) textView;
TextView phone = (TextView)findViewById(R.id.textView2);
if(actionID == EditorInfo.IME_ACTION_GO){
Log.d(TAG, "IN THE SEND");
phone.setText(userMessage.getText());
}
return false;
}
});
}
Das ist mein xml ist Ich habe zwei Probleme: 1) Die Ereignishandler funktionieren nicht, wenn ich auch in die Eigenschaften des Steuerelements gehen und die OnClick-Eigenschaft auf die gewünschte Methode festlegen. Mit anderen Worten: Ich klicke mehrmals auf ein Steuerelement, und nichts passiert, wenn ich die OnClick-Eigenschaft nicht auf eine Funktion setze, dann funktionieren die Steuerelemente und ihre Ereignisbehandlungsroutinen wie erwartet.
2) Wenn Sie die OnClick-Eigenschaft jedes Steuerelements auf den gewünschten Ereignishandler (Callback-Funktion) festlegen, muss ich zweimal auf das Steuerelement klicken, damit es funktioniert. Dies geschieht, da ich die OnClick-Eigenschaft und auch die OnClick-Funktion im Event-Handler festlege.
Warum reagieren meine Ereignishandler nicht? Warum muss ich die OnClick-Eigenschaft festlegen? Muss ich die OnClick-Eigenschaft festlegen und nicht die Anonyme Klassenmethode verwenden, um Ereignishandler zu erstellen?
Vielen Dank !!
Mögliche Duplikate von [Wie Knopf-Klicks mit dem XML-onClick innerhalb von Fragmenten behandelt werden] (http://stackoverflow.com/questions/6091194/how-to-handle-button-clicks-using-the-xml-onclick- innerhalb von Fragmenten) – SaravInfern