簡體   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