2017-12-11 2 views
1

ActivityOne -> FragmentOne을 담은 나는 방법을 추가하여 onActivityResult단편 활동 및 onActvityResult 다른 활동는 null

FragmentOne ->에 startActivityForResult가

ActivityTwo을 ActivityTwo 것 클릭 recyclerView 및 항목을 포함 -> FragmentOne의 recyclerView에 대한 항목 세부 정보는

ActivityOne null 데이터 onActivityResult

코드 : ActivityOne

protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    Utils.showToast("intent receive"); 
    if (requestCode==1111 && resultCode == RESULT_OK){ 
     int position =(int) data.getExtras().get("position"); 
     Log.d("TAG", "onActivityResult: "+ position); 
    } 
} 

코드 : FragmentOne

Intent i = new Intent(mContext.getApplicationContext(), ActivityTwo.class); 
      Bundle bundle = new Bundle(); 
      bundle.putInt("id", id); 
      bundle.putInt("position",position); 
      i.putExtras(bundle); 
      ((Activity) mContext).startActivityForResult(i,1111); 

코드 : ActivityTwo

@Override 
public void onBackPressed() { 
    super.onBackPressed(); 
    if (hasChanges){ 
     Intent intent = new Intent(); 
     intent.putExtra("position",position); 
     setResult(Activity.RESULT_OK,intent); 
    } 
    finish(); 
} 

답변

4

변경 onBackPressed() as.You 방금 결과를 보내지 않고 활동을 마쳤습니다. 그리고이 경우에 한 가지 더 super.onBackPressed()은 finish와 같은 일을 할 것입니다. 단지 하나만 부르면됩니다.

@Override 
public void onBackPressed() { 
    if (hasChanges){ 
     Intent intent = new Intent(); 
     intent.putExtra("position",position); 
     setResult(Activity.RESULT_OK,intent); 
    } 
    super.onBackPressed(); 
}