Как я могу создать диалог, который запускается сервисом? - PullRequest
2 голосов
/ 06 января 2012

Думаю, мою проблему легко решить.У меня есть служба, работающая в фоновом режиме и запускающая Intent, который запускает действие, которое открывает диалог.Это мой код из службы:

Intent todialog = new Intent();
todialog.setClass(myService.this, openDialogInSleep.class);
todialog.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(todialog);

, а вот активность:

import android.app.Activity;
import android.app.AlertDialog;
import android.os.Bundle;

public class openDialogInSleep extends Activity{

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    new AlertDialog.Builder(openDialogInSleep.this)
    .setTitle("huhu")
    .setNeutralButton("close", null);
}   
}

Наконец манифест андроида:

<activity android:name=".openDialogInSleep" android:theme="@android:style/Theme.Dialog"></activity>

Моя проблема в том,что там не отображается диалог с заголовком "хуху" и кнопкой "закрыть".Там отображается только диалог в странной форме, который просто показывает часть моего имени деятельности.Что я забыл?Пожалуйста, помогите мне.

MFG.Alex

Ответы [ 2 ]

2 голосов
/ 06 января 2012

Вы забыли ввести show(), чтобы отобразить диалог.

new AlertDialog.Builder(openDialogInSleep.this)
    .setTitle("huhu")
    .setNeutralButton("close", new OnClickListener() {

        @Override
        public void onClick(DialogInterface arg0, int arg1) {
            openDialogInSleep.this.finish();
        }

    })
    .show();
1 голос
/ 06 января 2012

Одна вещь, которую вы пропустили, это вызвать show() в диалоговом окне, сгенерированном AlertBuilder.

UPDATE

Если я вас правильно понимаю, вы не хотите, чтобы действие захватывало экран, а просто отображали диалог?

Если это так, я не думаю, что это возможно, единственный способ создать подобный эффект - использовать сообщение Toast. Это можно запустить из вашего Сервиса, и вам вообще не потребуется никаких действий.

...