如何构建由服务启动的对话框



我想我的问题对你来说很容易解决。我有一个服务在后台运行,并启动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);
}   
}

最后是android清单:

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

我的问题是,没有显示标题为"huhu"和按钮为"close"的对话框。只显示了一个奇怪形式的对话框,它只是显示了我活动名称的一部分。我忘了什么?请帮帮我。

制造商。Alex

您忘记了在show()中链接以实际显示对话框。

new AlertDialog.Builder(openDialogInSleep.this)
    .setTitle("huhu")
    .setNeutralButton("close", new OnClickListener() {
        @Override
        public void onClick(DialogInterface arg0, int arg1) {
            openDialogInSleep.this.finish();
        }
    })
    .show();

您错过的一件事是在AlertBuilder生成的对话框上调用show()

更新

如果我理解正确,你不希望活动控制屏幕,而是只显示对话框?

如果是这种情况,我认为这是不可能的,那么创建类似效果的唯一方法就是使用Toast消息。这可以从您的服务启动,您根本不需要该活动。

最新更新