2017-02-04 17 views
1

몇 가지 절차를 마친 후 메시지가있는 Dialog를 표시하려고하는 IntentService가 있습니다.IntentService를 통해 대화 상자를 표시 하시겠습니까?

나는

handler.post(new Runnable() { 
     @Override 
     public void run() { 
      Toast.makeText(ServiceName.this, message, Toast.LENGTH_LONG); 
     } 
    }); 

을 수행하여 토스트를 표시 할 수 있습니다하지만 난 그게 더 많은 텍스트를 표시하고 내가 뭘하려고 오전 청정 보이는 수 있기 때문에, 대신에 대화 상자를 표시합니다. 그러나 나는하려고하면

handler.post(new Runnable() { 
     @Override 
     public void run() { 
      new AlertDialog.Builder(ServiceName.this) 
        .setTitle("Title") 
        .setMessage(message) 
        .create().show(); 
     } 
    }); 

그것은 오류가 발생합니다 :

java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity.

내가 그 응용 프로그램에서 다른 모든 것들에 영향을 미칠 수 있기 때문에 내 매니페스트와 주변 하구 가고 싶지 않아,하지만 거기에 어떤이다 이 주위에? 어떻게 AppCompatActivity를 IntentService로 전달할 수 있습니까? 어떻게 든 IntentService를 AppCompat과 연관시킬 수 있습니까? 내 옵션은 무엇입니까?

편집 : 대화 활동 방식 사용하려고 :

Can I somehow associate the IntentService with AppCompat?

번호

What are my options?

이 대화를 주제로 활동을 만들기

Intent intent = new Intent(ServiceName.this, ActivityWithDialogTheme.class); 
intent.putExtra(ActivityWithDialogTheme.MESSAGE, message); 
startActivity(intent); 

답변

1

Can I somehow pass an AppCompatActivity into the IntentService?

번호, 및 귀하의 서비스에서 그 활동을 시작하십시오.

또는 서비스에 절차가 완료되었다는 메시지를 이벤트 버스에 게시하게하십시오. 포 그라운드에서 활동이 발생하면 이벤트 버스 메시지를 선택하고 대화 상자를 표시 할 수 있습니다. 포 그라운드에서 활동이없는 경우 서비스는 사용자를 방해하지 않도록 다른 것을 찾아서 (예 : Notification 표시) 찾을 수 있습니다.

+0

이벤트 버스에 게시하는 것은 무엇을 의미합니까? 활동을 가져 오려면 어떻게해야합니까? 알림에 관해서는 익숙하지 않지만 배우기 좋은 것 같아요 – KaliMa

+0

@KaliMa : "이벤트 버스에 게시하면 어떨까요?" - 이벤트 버스 (예 : LocalBroadcastManager') (https://github.com/commonsguy/cw-omnibus/tree/master/EventBus/LocalBroadcastManager) 또는 [greenrobot 's EventBus] (https : // github .com/commonsguy/cw-omnibus/트리/마스터/EventBus/GreenRobot3). "활동을 시작하려면 어떻게해야합니까?" - 그것은 이벤트 버스 사용의 일부입니다. 이 주석의 앞부분에있는 링크는 두 버스 모두의 사용을 보여주는 프로젝트 샘플을 UI 또는 서비스 작업의 결과가 될 알림 (이 경우에는 'AlarmManager'에 의해 트리거 됨)입니다. – CommonsWare

+0

이 상황에서 EventBus를 사용하는 방법을 모르는 경우이 옵션을 사용하지 않는다는 것을 의미합니까? – KaliMa