2016-08-13 3 views
0

Я начинаю ProfileActivity с HomeActivity 's toolbar. По какой-то причине, когда я возвращаюсь от ProfileActivity, onActivityResult() не вызывается. Ниже приведен соответствующий код. Заранее спасибо!onActivityResult не называется?

код панели инструментов внутри HomeActivity:

@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:

@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(); 
     } 
    } 
} 

Метод, вызываемый в ProfileActivity, чтобы вернуться обратно домой:

public void editWorkout(String date){ 

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

} 

HomeActivity иманифеста:

 <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

о человеке спасибо много. Принят ответ, я смогу! –

+0

Добро пожаловать :) – earthw0rmjim

+1

@DavidYuan Я думаю, [отладка резиновой утки] (https://en.wikipedia.org/wiki/Rubber_duck_debugging) могла бы сэкономить ваше время. Нет? : D – Sufian

Смежные вопросы