احصل على قيمة Edittext من النشاط الفرعي
-
12-09-2019 - |
سؤال
كيفية الحصول على قيمة Edittext من النشاط الفرعي؟ مع شرط أنه إذا قمت بالنقر فوق الزر "السابق" على الهاتف، فلا يوجد خطأ في النشاط الفرعي؟
هذا هو بلدي النشاط الفرعي الشفرة:
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();
}
}
هذا هو بلدي نتيجة النشاط:
@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;
}
}
المحلول
بادئ ذي بدء، يجب ألا تحاول أي نوع من الإجراءات إذا كان المستخدم يضرب الزر "الخلفي". إنه زر عالمي يعني "الخروج من هنا الآن"، وعادة ما يكون من المفهوم أن المستخدم يريد شيئا آخر غير سجل شاشة واحدة تحدث نتيجة لذلك.
إذن ما عليك القيام به هو في SearchButton.SetonClickListener، في OnClick، قم بإنشاء نية فارغة مثل ذلك:
Intent data = new Intent();
ثم تحتاج إلى إضافة قيمة Edittext كقيمة إضافية، مثل ذلك:
data.putExtra(SBooksDbAdapter.KEY_TITLE_RAW, mTextSearch.getText().toString());
أخيرا، قم بتضمين هذه النية في مكالمة SetResult الخاصة بك:
setResult(RESULT_OK, data);
في onactivityResoursult، اسحب القيمة من النية وكأنك تقوم بالفعل ويجب أن تكون على ما يرام.
لا تنتمي إلى StackOverflow