2016-12-31 8 views
-1

私は結果を得るために別のものを開始するアンドロイド活動があります。 2番目のアクティビティには、選択した値に基づいて親アクティビティに値を返すカスタムリストビューがあります。問題は、onActivityResultではRESULT_OK = -1が返されますが、返される値は常に0です。 は最初の活動で、私はoptionsMenu第二を呼び出す:onActivityResultは結果を取得しません

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

そして第二の活動に:

​​

私のonActivityResultがある

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を送信しましたが、onActivityResultintを取得するよう要求しましたので、を定義する必要がありましたlongonActivityResultとしては次のようになります。

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

}あなたのセカンド活動に

0

は、ちょうどこのコードを使用します。

@Override 
protected void onActivityResult (int requestCode, int resultCode, Intent i){ 
    if(resultCode == RESULT_OK && requestCode == REQUEST_CODE){ 
     workTime = (int)i.getLongExtra("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(); 
      long w = selected.getWorkTime; //has the correct value. 
      i.putExtra("workTime", w); 
      setResult(RESULT_OK, i); 
      finish(); 
     } 
    }); 

そしてonActivityResultにおける最初のアクティビティで

0

ご迷惑をおかけして申し訳ございません。 RESULT_OKの値は-1であり、0ではありません。したがって、resultコードは-1です。
Check this screenshot.

関連する問題