마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

브로드캐스트리시버가 안돼서 질문드립니다.

0 추천

정적 브로드캐스트리시버를 사용하려고 합니다.

 

FrameLayout를 상속받은 클래스에서 터치이벤트를 입력받고, FragmentActivity를 상속받은 맵 액티비티에서 방송을 캐치하려고 합니다.
 
매니패스트에
 
<receiver android:name=".MapActivity" >
<intent-filter>
<action android:name="com.nate.ltereporting.action.ACTION_DOWN" />
<action android:name="com.nate.ltereporting.action.ACTION_UP" />
</intent-filter>
</receiver>
 
FrameLayout를 상속받은 클래스에서
 
@Override
public boolean dispatchTouchEvent(MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
intent = new Intent("com.nate.ltereporting.action.ACTION_DOWN");
getContext().sendBroadcast(intent);
break;
case MotionEvent.ACTION_UP:
intent = new Intent("com.nate.ltereporting.action.ACTION_UP");
getContext().sendBroadcast(intent);
break;
}
return super.dispatchTouchEvent(event);
}

 

 
그리고 맵 액티비티에서
 
private BroadcastReceiver mReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals("com.nate.ltereportin.action.ACTION_DOWN")) {
Log.d("fureun", "Action Down");
}
else if (intent.getAction().equals("com.nate.ltereportin.action.ACTION_DOWN")) {
Log.d("fureun", "Action Up");
}
}

};

 

 
이렇게 했는데 안되더라구요 ... 어떻게 해야 원하는 결과를 얻을 수 있을까요 ??
 
 
에러 내용은
 
음무 (17,820 포인트) 님이 2014년 6월 18일 질문

2개의 답변

+2 추천
 
채택된 답변
Reciever 클래스를 새로 만들어서 거기서 처리하게 하세요.

 

아니면 동적으로 receiver를 만드시는 방법도..

클래스 파일 하나 만들어서 receiver 클래스 만들고

class AReceiver extends BroadcastReceiver {

}

이걸 사용하려는 클래스에서

AReceiver receiver = new AReceiver();

IntentFilter intentFilter = new IntentFilter();

intentFilter.addAction(......);

context.registerReceiver(receiver, intentFilter);

대신 registerReceiver를 했으면, 사용안할때는 unregisterReceiver를 해주시면 되요
-쫑- (1,790 포인트) 님이 2014년 6월 18일 답변
음무님이 2014년 6월 18일 채택됨
+2 추천

MapActivity class 가 BroadcastReceiver 를 extends 안하고 Activity 를 했을 터이니 당연히 오류가 납니다..

 

aucd29 (218,390 포인트) 님이 2014년 6월 18일 답변
어떻게 해야하나요 ??  MapActivity는 FragmentActivity를 extends하고있는데요 ... ㅠㅠ
...