nicht ausgeben Ich bin relativ neu in der Entwicklung von Anwendungen in Android Studio
oder Java
und vor kurzem lief in ein Problem, das ich einfach nicht herausfinden kann. Im Moment versuche ich nur, den Inhalt des Feldes EditText
auszugeben, nachdem auf Button
geklickt wurde.Kann den Inhalt eines EditText -Elements innerhalb OnClick-Methode
Da ich höchstwahrscheinlich mehr Tasten zum Activity
später hinzufügen werde, dachte ich, dass es praktisch wäre, ein generisches onClick
zu verwenden, wo man verschiedene Tastenaktionen innerhalb der switch
Anweisung trennen kann.
Hier ist ein funktionierendes Beispiel, in dem die onClickListener
, die keine generische onClick
Methode nicht verwenden:
package com.example.user.myapp;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
public class MainActivity extends Activity {
private EditText testText;
private Button testButton;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// initialize UI elements
final EditText testText = (EditText) findViewById(R.id.testText);
testButton = (Button) findViewById(R.id.testButton);
// set onClick listener
testButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// it will print the content of testText as long as the "testText" variable is declared as final
System.out.println(testText.getText().toString().trim());
}
});
}
}
Nun, wenn ich versuche, eine generische onClick
Methode zu verwenden, werde ich plötzlich folgende Fehlermeldung:
java.lang.NullPointerException: Attempt to invoke virtual method 'android.text.Editable android.widget.EditText.getText()' on a null object reference
Hier ist der Code, dass der Fehler, der oben genannten Ursachen:
package com.example.user.myapp;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
public class MainActivity extends Activity implements View.OnClickListener {
private EditText testText;
private Button testButton;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// initialize the UI elements
EditText testText = (EditText) findViewById(R.id.testText);
Button testButton = (Button) findViewById(R.id.testButton);
// set onClick Listener
testButton.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch(v.getId()) {
case R.id.testButton:
// this will result in an error
System.out.println(testText.getText().toString().trim());
break;
default:
break;
}
}
Fehle ich hier etwas?
Teilen Sie Ihr Layout? – uguboz
Sie definieren 'EditText testText' zweimal – Jens
Verwenden Sie entweder globale oder lokale Variable – uguboz