【发布时间】:2010-11-18 07:07:31
【问题描述】:
如何从子Activity中获取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;
}
}
【问题讨论】:
-
你的意思是你想返回一个字符串给调用活动? startActivityForResult(...) & setResult(resultCode, data) 然后。
-
我想从Sub-Activity的TextView中获取String值。但是当我打开子活动,然后我点击手机上的后退按钮时,它会抛出异常错误。问题是当我尝试解决异常错误(管理活动生命周期)时,不再有异常,但我无法获取字符串值!那么如何获取String并无一例外地点击手机上的返回按钮呢?
-
您能否发布一些代码 sn-ps,以便更容易准确地理解您正在尝试什么以及为什么 startActivityForResult 调用不能满足您的需要?
-
哦,真的很抱歉,我这里有点混乱。我的意思是 EditText 不是 TextView。
标签: android android-activity android-edittext