2016-08-13 62 views
0

我从HomeActivity的工具栏开始ProfileActivity。 由于某种原因,当我从ProfileActivity返回时,onActivityResult()未被调用。以下是相关的代码。提前致谢!里面HomeActivityonActivityResult未被调用?

工具栏代码:

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

} 

HomeActivityProfileActivity清单:

 <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