2015-01-14 3 views
0

AppA와 AppB의 두 응용 프로그램간에 데이터를주고받습니다. 내 AppA에는 AppAFragment가 포함 된 AppAActivity.java가 있습니다. 이 프래그먼트가 AppB를 열려면 AppBctivity.java를 열고 Login 프래그먼트를 열고 그 다음 Payment 프래그먼트를 누른 다음 Acknowledgment 프래그먼트를 열어 보겠습니다. 이 Acknowledgment 프래그먼트는 "다음"버튼을 가지고 있으며, 클릭하면 setResult 메소드가 호출되어 결과를 수신하도록 AppAFragment에 경고합니다. 그러나 결과를 수신하는 AppAFragment의 onActivityResult 메소드는 다시 호출되지 않습니다.onActivityResult가 다시 호출되지 않았습니다.

AppAFragment.java

@Override 
public void openUrl() { 
    Intent intent = getBaseParentActivity().getPackageManager() 
      .getLaunchIntentForPackage(DataConstants.SAMPLE_RIB_PACKAGE); 
    intent.setAction(Intent.ACTION_SEND); 
    intent.putExtra(DataConstants.TRANSACTION_REFERENCE, getLinkWS() 
      .getTransRef()); 
    intent.putExtra(DataConstants.TRANSACTION_AMOUNT, mAmount.getText() 
      .toString()); 
    intent.setType(MediaType.TEXT_PLAIN); 
    startActivityForResult(intent, 
      DataConstants.CODE_APP_TO_APP_PAYMENT); 
} 

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

    if (resultCode == Activity.RESULT_OK 
      && requestCode == DataConstants.CODE_APP_TO_APP_PAYMENT) { 

     Log.v("Test", "Test"); 

     Toast.makeText(getBaseParentActivity(), 
       data.getStringExtra(DataConstants.BANK_REFERENCE_NO), 
       Toast.LENGTH_SHORT).show();   
    } 
} 

AcknowledgementFragment.java

@Override 
public void buttonNext() { 
    Intent intent = new Intent(); 
    intent.putExtra(DataConstants.BANK_REFERENCE_NO, infoModel.getBankRef()); 

    getActivity().setResult(Activity.RESULT_OK, intent); 
    getActivity().finish(); 
} 

대단히 감사합니다!

+0

이 ** AppAFragment **에 ** AppAActivity **에서'onActivtyResult'를 이동하려고이 라인을 추가하려고합니다. Android에서 활동은 의도를 전달하는 주요 흐름입니다. 인 텐트는 프래그먼트를 실행하는 Activity를 시작할 수 있으므로 최상의 코딩 퍼포먼스를 위해서는 모든 Intent 항목을 Activities가 보내고 받아야합니다 – drees

답변

0

이것은 가능한 동작의 원인 일 수 있습니다. 친절하게 확인하십시오.

조각이 활동 AppAFragment의 일부이기 때문에 조각이 startActivityForResult 호출을 작성하는 경우에도 활동은 결과를 처리 할 때 첫 번째 샷을 가져옵니다.

당신의 조각 시도의 결과를 얻으려면 : 당신의 조각 내부

startActivityForResult(intent,111);

대신

getActivity().startActivityForResult(intent,111);합니다.

또한, 활동 onActivityResult를 방법,

super.onActivityResult(); 
관련 문제