2016-08-13 24 views
0

のツールバーからProfileActivityを開始しています。 ProfileActivityから返される何らかの理由により、onActivityResult()が呼び出されていません。関連するコードは以下のとおりです。前もって感謝します! HomeActivity内部onActivityResultが呼び出されていませんか?

ツールバーコード:

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    switch (item.getItemId()) { 
     case R.id.searchBox: 

      return true; 

     case R.id.userProfile: 
      Intent intent = new Intent(HomeActivity.this, ProfileActivity.class); 
      Bundle b = new Bundle(); 
      b.putString("userID", uID); 
      intent.putExtras(b); 
      startActivityForResult(intent, 10); 
      finish(); 
      return true; 

     default: 
      return super.onOptionsItemSelected(item); 

    } 
} 

onActivityResult()HomeActivity内側:

public void editWorkout(String date){ 

    Intent intent = new Intent(); 
    intent.putExtra("date", date); 
    setResult(Activity.RESULT_OK, intent); 
    finish(); 

} 

HomeActivityと:自宅に戻りするProfileActivityに呼ば

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 

    if (requestCode == 10) { 
     Log.d("WorkoutLog", "onresult called"); 
     if(resultCode == Activity.RESULT_OK){ 
      Toast.makeText(context, data.getStringExtra("date"), Toast.LENGTH_SHORT).show(); 
     } 
    } 
} 

方法マニフェスト:

 <activity 
     android:name=".HomeActivity" 
     android:screenOrientation="portrait" 
     android:windowSoftInputMode="adjustPan"> 
     <intent-filter> 
      <action android:name="android.intent.action.HOME" /> 

      <category android:name="android.intent.category.DEFAULT" /> 
     </intent-filter> 
    </activity> 
    <activity 
     android:name=".ProfileActivity" 
     android:screenOrientation="portrait" 
     android:windowSoftInputMode="adjustPan"> 
     <intent-filter> 
      <action android:name="android.intent.action.PROFILE" /> 

      <category android:name="android.intent.category.DEFAULT" /> 
     </intent-filter> 
    </activity> 
+0

あなたは '場合(requestCode == 10){' –

答えて

3

finish()が効果的に呼び出しActivityを殺し、startActivityForResult()後にそれを呼び出すことはありません:

case R.id.userProfile: 
    Intent intent = new Intent(HomeActivity.this, ProfileActivity.class); 
    Bundle b = new Bundle(); 
    b.putString("userID", uID); 
    intent.putExtras(b); 
    startActivityForResult(intent, 10); 

    return true; 
+0

ああ男のおかげaを削除するとどうなりますかロット。私は答えを受け入れるでしょう! –

+0

あなたは大歓迎です:) – earthw0rmjim

+1

@DavidYuan [rubber duck debugging](https://en.wikipedia.org/wiki/Rubber_duck_debugging)があなたの時間を節約したと思います。いいえ? :D – Sufian

関連する問題