2016-12-31 90 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);    
    } 
}