2015-05-30 15 views
0

我有一个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); 
    } 

回答

0

当我尝试返回导致它在中间丢失。

它不会在中间丢失。你正在寻找错误的地方的结果。 getIntent()返回意图通过您的Activity已启动。它不知道您在其他Activity中设置的结果。您必须使用onActivityResultIntent data的第三个参数。

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