J'apprends à créer des éléments d'interface utilisateur. J'ai créé quelques champs de saisie EditText. Sur le clic d'un bouton, je veux capturer le contenu saisi dans ce champ de saisie.
<EditText Android:id="@+id/name" Android:width="220px" />
C'est mon domaine. Comment puis-je obtenir le contenu?
En utilisant getText ():
Button mButton;
EditText mEdit;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mButton = (Button)findViewById(R.id.button);
mEdit = (EditText)findViewById(R.id.edittext);
mButton.setOnClickListener(
new View.OnClickListener()
{
public void onClick(View view)
{
Log.v("EditText", mEdit.getText().toString());
}
});
}
Je suppose que vous devrez utiliser ce code lorsque vous appelez "mEdit" votre objet EditText:
myActivity.this.mEdit.getText().toString()
Assurez-vous simplement que le compilateur sait quelle EditText
appeler et utiliser.
Tirez profit d'un contrôle EditText
sous Android. EditText
getText
propriété utiliser pour obtenir une valeur EditText
:
EditText txtname = (EditText)findViewById(R.id.name);
String name = txtname.getText().toString();
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button rtn = (Button)findViewById(R.id.button);
EditText edit_text = (EditText)findViewById(R.id.edittext1);
rtn .setOnClickListener(
new View.OnClickListener()
{
public void onClick(View view)
{
Log.v("EditText value=", edit_text.getText().toString());
}
});
}
J'espère que celui-ci devrait fonctionner:
Integer.valueOf(mEdit.getText().toString());
J'ai essayé la méthode Integer.getInteger()
au lieu de valueOf()
- cela n'a pas fonctionné.
Vous voudrez peut-être aussi jeter un oeil à Butter Knife . Il vise à réduire la quantité de code passe-partout en utilisant une annotation. Voici un exemple simple:
public class ExampleActivity extends ActionBarActivity {
@InjectView(R.id.name)
EditText nameEditText;
@InjectView(R.id.email)
EditText emailEditText;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_example);
Butterknife.inject(this);
}
@OnClick(R.id.submit)
public void onSubmit() {
Editable name = nameEditText.getText();
Editable email = emailEditText.getText();
}
}
Ajoutez simplement la dépendance suivante à votre build.gradle
:
compile 'com.jakewharton:butterknife:x.y.z'
Comme alternative, il y a aussi AndroidAnnotations .
Une méthode plus avancée consisterait à utiliser butterknife bindview. Cela élimine le code redondant.
Dans ton grade sous dépendances; ajoutez ces 2 lignes.
compile('com.jakewharton:butterknife:8.5.1') {
exclude module: 'support-compat'
}
apt 'com.jakewharton:butterknife-compiler:8.5.1'
Puis synchronisez . Exemple de liaison edittext dans MainActivity
import butterknife.BindView;
import butterknife.ButterKnife;
public class MainActivity {
@BindView(R.id.name) EditTextView mName;
...
public void onCreate(Bundle savedInstanceState){
ButterKnife.bind(this);
...
}
}
Mais ceci est une alternative lorsque vous vous sentez plus à l'aise ou que vous commencez à travailler avec beaucoup de données.
getText(editText);
getText(button);
getText(textView);
Créez simplement une méthode dans votre BaseActivity/créez BaseActivity si vous n'en avez pas.
public class BaseActivity extends AppCompatActivity{
public String getText(TextView tv) {
return tv.getText().toString().trim();
}
}
Et prolongez toutes vos activités avec cette BaseActivity.
public class YourActivity extends BaseActivity {
@Override
public void onCreate(Bundle savedInstanceState){
getText(editText);
getText(button);
getText(textView);
}
}
Notez que EditText
, Button
étend TextView
. J'ai donc créé uniquement getText(TextView tv)
.
Essayez ce code
final EditText editText = findViewById(R.id.name); // your edittext id in xml
Button submit = findViewById(R.id.submit_button); // your button id in xml
submit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v)
{
String string = editText.getText().toString();
Toast.makeText(MainActivity.this, string, Toast.LENGTH_SHORT).show();
}
});