2014-06-06 4 views
0

둘 중 하나가 일시 중지 (스택) 된 두 가지 활동간에 통신하는 방법이 있는지 궁금합니다.누적 된 활동과 통신하기

sendBroadcast를 사용하여 데이터를 얻으려고 시도했지만 지금까지는 행운을 얻지 못했습니다. onCreate()에 수신기를 등록하고 onDestroy()에서 등록을 취소하므로 두 번째 활성 활동이 작동하는 동안 계속 작동합니다. 수신기에 필터를 추가했는데 의도가 적절합니다.

작동시킬 수도 있습니까? 또는이 통신을 달성하기위한 더 좋은 방법이 있습니까?

============= 요청 ==========로 코드를 추가 EDIT

====== CODE ===== =

- RECEIVER

private BroadcastReceiver localBroadcastReceiver = new BroadcastReceiver() { 
    @Override 
    public void onReceive(Context context, Intent intent) { 
      if (intent.getAction().equals(Globals.DATA_TO_ADSLIST)) { 
      int value = intent.getIntExtra(Globals.AD_ORGANIZER_TO_ADSLIST_VALUE, 0); 
      if (value > 0) { 
       listViewAdapter.notifyDataChange(); 
      } 
      } 
     } 

- BROADCAST

 Intent dataToAdsList = new Intent(Globals.DATA_TO_ADSLIST); 
     dataToAdsList.putExtra(Globals.AD_ORGANIZER_TO_ADSLIST_VALUE, 1); 
     context.sendBroadcast(dataToDbService); 

- UNREGISTER

@Override 
public void onDestroy() { 
    super.onDestroy(); 
    if (getActivity().isTaskRoot()) { 
     AQUtility.cleanCacheAsync(getActivity()); 
    } 
    LocalBroadcastManager.getInstance(getActivity()).unregisterReceiver(localBroadcastReceiver); 
} 

- 도움 REGISTER

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setHasOptionsMenu(true); 
    IntentFilter filter = new IntentFilter(); 
    filter.addAction(Globals.SEND_ADS_LIST); 
    filter.addAction(Globals.DATA_TO_ADSLIST); 
     LocalBroadcastManager.getInstance(getActivity()).registerReceiver(localBroadcastReceiver, filter); 
} 

감사합니다! 이 도움이

+0

코드를 게시하면 해결 방법을 찾는 것이 좋습니다. –

+0

코드를 추가했습니다. – JakubW

+0

일시 중지 된 활동과 통신 할 수 없습니다. 어떤 종류의 처리를 시작하려면 해당 활동을 포 그라운드로 가져와야합니다. 문제를 푸는 두 가지 방법 :'startActivityForResult'로 최상위 액티비티를 호출 한 다음'setResult'와'finish'를 사용하십시오 - 앞에서'onActivityResult'를 사용하여 필요한 것을하십시오. 두 번째 방법은 동일한 방식으로 일시 중지되지 않는 서비스를 사용하는 것입니다. –

답변

1

활동이 일시 중지되면 일시 중지 상태이므로 직접 활동과 통신 할 수 없습니다. 다른 활동을 호출 한 다음 첫 번째 활동으로 데이터를 다시 전달하려면 두 번째 활동을 startActivityForResult으로 시작한 다음 "하위 활동"에서 finish 앞에 setResult을 사용하십시오. setResult 전화의 경우 Intent을 '상위'활동으로 다시 전달하려는 정보와 함께 전달할 수 있습니다. 마지막으로 상위 활동에서 onActivityResult을 무시하십시오. 하위 활동이 종료되면 자동으로 호출됩니다. 여기에서 Intent의 데이터를 검색하고 이에 따라 조치를 취할 수 있습니다.

0

SEND_BROADCAST

BROADCAST

에 대한
Intent i = new Intent("BROADCAST_TEST"); 
    i.putExtra("DATA","TEST MSG"); 
    sendBroadcast(i); 

등록

registerReceiver(uiUpdated, new IntentFilter("BROADCAST_TEST")); private BroadcastReceiver uiUpdated= new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { String mData; Type=intent.getExtras().getString("DATA"); } }; 

희망! 건배!