我有一个活动,启动另一个具有EditText视图的活动。当用户单击“返回”按钮时,我希望返回此编辑文本视图中的字符串,但我无法使其工作。我试图实现一个按钮(测试目的)并运行我的代码然后它工作。
在启动另一个的活动中:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (REQUEST_CODE_COMMENT == requestCode) {
if (RESULT_OK == resultCode) {
Toast.makeText(this, data.getDataString(), Toast.LENGTH_LONG).show();
}
}
}
使用编辑文本视图的活动(我想让它工作):
@Override
public void onBackPressed() {
super.onBackPressed();
Intent intent = new Intent();
intent.setData(Uri.parse("hfldskajfkj" + commentEditText.getText().toString()));
setResult(RESULT_OK, intent);
}
但是当我记录它时,resultCode为0(RESULT_CANCELLED)。
答案 0 :(得分:3)
public void onBackPressed() {
finish();
}
这是onBackPressed()
的默认实现(也在documentation中提到)。这意味着在调用其他代码之前,您的活动已完成(使用默认代码RESULT_CANCELLED
)。删除super.onBackPressed()
并在底部添加finish()
应解决此问题。
答案 1 :(得分:2)
问题在于:API说:
public void onBackPressed()自:API Level 5
当活动检测到用户按下后退键时调用。默认 实现只是完成当前活动,但您可以重写此操作 无论你想要什么。
当您调用super.onBackPressed()时,将清除对特定活动的所有引用。因此,不添加特定数据。尝试在按钮的OnClickListener中插入相同的代码。这应该工作
答案 2 :(得分:0)
Android UI指南中的某处说它不应该有明确的“保存”按钮。在这种情况下,答案很简单:不要费心检查结果代码是否为RESULT_OK,无论如何都要使用EditText小部件的最后一个值。