繁体   English   中英

为同一活动提供结果

[英]Give Result to the same Activity

我有一个用来获取文件夹路径的活动。 要导航到下一个文件夹,我使用文件夹的路径为此活动创建了一个意图。 当我尝试返回结果时,它会在中间丢失。

给出结果:

@Override
    public boolean onOptionsItemSelected(MenuItem item)
    {
        Intent returnIntent = getIntent();
        switch (item.getItemId())
        {
            case R.id.action_ok:
                returnIntent.putExtra("path", filename);
                Log.d("Result", "Picker"+String.valueOf(RESULT_OK));
                setResult(Activity.RESULT_OK, returnIntent);
                finish();
                return true;
            case R.id.action_abort:
                setResult(RESULT_CANCELED, returnIntent);
                finish();
                return true;
            default:
                return super.onOptionsItemSelected(item);
        }
    }

导航(是的,这是一个ListActivity):

@Override
    protected void onListItemClick(ListView l, View v, int position, long id)
    {
        filename = (String) getListAdapter().getItem(position);
        if (path.endsWith(File.separator))
        {
            filename = path + filename;
        }
        else
        {
            filename = path + File.separator + filename;
        }
        if (new File(filename).isDirectory())
        {
            Intent intent = new Intent(this, DirectoryPicker.class);
            intent.putExtra("path", filename);
            startActivityForResult(intent,0);
        } 
        this.finish();
    }

得到结果:

@Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data)
    {
        if (getIntent() != null)
        {
            Intent returnIntent = getIntent();
            setResult(RESULT_OK, returnIntent);
            finish();
        }
        super.onActivityResult(requestCode, resultCode, data);
    }

当我尝试返回结果时,它会在中间丢失。

它不会在中间丢失。 您在错误的位置寻找结果。 getIntent()返回Activity开始时的意图。 它不知道您在其他Activity设置的结果。 您必须使用onActivityResult的第三个参数,即Intent data

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
   if (data != null) {
       setResult(RESULT_OK, data);
       finish();
   }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM