Obtenez la valeur de l'activité sous EditText
-
12-09-2019 - |
Question
Comment obtenir la valeur de EditText de sous-activité? Avec une condition que si je clique sur le bouton de retour sur le téléphone, il n'y a pas d'erreur dans la sous-activité?
Ceci est mon Sous-activité Code:
public class SBooksSearch extends Activity {
private EditText mTextSearch;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.sbooks_search);
mTextSearch = (EditText)findViewById(R.id.edit_search);
Button searchButton = (Button)findViewById(R.id.btn_search);
searchButton.setOnClickListener(new View.OnClickListener(){
public void onClick(View v){
Intent data = new Intent();
data.putExtra(SBooksDbAdapter.KEY_TITLE_RAW, mTextSearch.getText().toString());
setResult(RESULT_OK, data);
finish();
}
});
}
@Override
protected void onSaveInstanceState(Bundle outState){
super.onSaveInstanceState(outState);
}
@Override
protected void onPause(){
super.onPause();
}
@Override
protected void onResume(){
super.onResume();
}
}
Ceci est mon Activité-Résultat:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent intent){
super.onActivityResult(requestCode, resultCode, intent);
switch(requestCode){
case ACTIVITY_SEARCH:
Bundle extras = getIntent().getExtras();
mTitleRaw = extras != null ? extras.getString(SBooksDbAdapter.KEY_TITLE_RAW) : null;
if(mTitleRaw!=null){
Cursor cursor = mDbHelper.searchData(mTitleRaw);
String[] from = new String[]{ SBooksDbAdapter.KEY_ROWID,
SBooksDbAdapter.KEY_TITLE, SBooksDbAdapter.KEY_LYRICS };
int[] to = new int[]{ R.id.id, R.id.title, R.id.lyrics };
SimpleCursorAdapter adapter =
new SimpleCursorAdapter(this, R.layout.sbooks_row, cursor, from, to );
setListAdapter(adapter);
}
break;
}
}
La solution
Tout d'abord, vous ne devriez pas tenter toute sorte d'action si l'utilisateur clique sur le bouton « retour ». Il est un bouton global qui signifie « me sortir d'ici maintenant », et il est généralement compris que l'utilisateur ne veut rien d'autre que de revenir un écran pour se produire en raison de cela.
Alors ce que vous devez faire est dans votre searchButton.setOnClickListener, dans le onClick, créer une intention vide comme ceci:
Intent data = new Intent();
Ensuite, vous devez être en ajoutant la valeur de votre EditText comme une valeur supplémentaire, comme suit:
data.putExtra(SBooksDbAdapter.KEY_TITLE_RAW, mTextSearch.getText().toString());
Enfin, inclure cette intention dans votre appel setResult:
setResult(RESULT_OK, data);
Dans votre onActivityResult tirer la valeur de l'intention que vous faites déjà et vous devriez être bien.