startActivityForResult的问题

时间:2011-09-11 18:59:20

标签: android android-activity

我有一个活动,启动另一个具有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)。

3 个答案:

答案 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小部件的最后一个值。