2016-12-31 111 views
-1

我有一个android活动,开始另一个获得结果。第二个Activity有一个自定义的listview,它应该根据选择返回一个值给父Activity。问题是,在onActivityResult我会得到RESULT_OK = -1,但我返回的值始终为0; 的第一个活动,我称之为第二次在一个optionsMenu:onActivityResult没有得到结果

​​

我onActivityResult是:

@Override 
protected void onActivityResult (int requestCode, int resultCode, Intent i){ 
    if(resultCode == RESULT_OK && requestCode == REQUEST_CODE){ 
     workTime = i.getIntExtra("workTime", 0);    
    } 
} 

而在第二个活动:

listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> adapterView, View view, int position, long l) { 
      Profile selected = (Profile) adapterView.getItemAtPosition(position); 
      Intent i = new Intent(view.getContext(), MainActivity.class); 
      long w = selected.getWorkTime; //has the correct value. 
      i.putExtra("workTime", w); 
      setResult(RESULT_OK, i); 
      finish(); 
     } 
    }); 
+1

查看本文[示例](http://stackoverflow.com/documentation/android/103/intent#t=201612310854047774161) –

回答

0

我发现这个问题是,我发送了一个long的意图,但要求在onActivityResult中获得int,所以我需要定义workTime作为longonActivityResult应该是:

protected void onActivityResult (int requestCode, int resultCode, Intent i){ 
if(resultCode == RESULT_OK && requestCode == REQUEST_CODE){ 
    workTime = i.getLongExtra("workTime", 0);    
} 

}

0

在你的第二个活动,只需使用此代码:

listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> adapterView, View view, int position, long l) { 
      Profile selected = (Profile) adapterView.getItemAtPosition(position); 
      Intent i = new Intent(); 
      long w = selected.getWorkTime; //has the correct value. 
      i.putExtra("workTime", w); 
      setResult(RESULT_OK, i); 
      finish(); 
     } 
    }); 

而且在第一次活动在onActivityResult:

@Override 
protected void onActivityResult (int requestCode, int resultCode, Intent i){ 
    if(resultCode == RESULT_OK && requestCode == REQUEST_CODE){ 
     workTime = (int)i.getLongExtra("workTime", 0);    
    } 
}