我正在通过Service显示Alert Dailog Box。
ShowAlert.java
public class ShowAlert extends Activity
{
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
new AlertDialog.Builder(this)
.setTitle("Alert Title")
.setMessage("Alert Message")
.setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
}
}).show();
}
}
在服务onStartCommand中,我有一个计时器线程,该线程每30秒运行一次。我正在计时器内部开始活动。
Timer myTimer = new Timer();
myTimer.schedule(new TimerTask() {
@Override
public void run() {
Intent intent = new Intent(this,ShowAlert.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
}
}, 1000, 30000);
在我的Android清单中,我使用了Dialog主题。
<activity android:name=".ShowAlert"
android:theme="@android:style/Theme.Dialog"></activity>
我得到了Dailog Box,如下所示。
单击“确定”后,我将看到另一个对话框,显示我的应用程序名称,如下所示
谁能帮我。我不明白为什么会看到第二个对话框。
第二个对话框不是真正的对话框,而是您的活动,因为您将清单中的主题设置为Theme.Dialog:
<activity android:name=".ShowAlert"
android:theme="@android:style/Theme.Dialog"></activity>
因此,发生的事情是,您从服务意图启动了活动,并且通过启动活动,您在活动内部创建的AlertDialog也将启动。通过取消对话框,AlertDialog消失,并显示您的活动。您尚未设置任何内容视图,因此将显示带有小对话框大小的“活动”,仅显示应用程序名称。
所以要摆脱这个,不要使用
android:theme="@android:style/Theme.Dialog"
将活动显示为对话框的目的是什么?您是否只想显示alertDialog?然后,您可以创建一个看起来像您想要的xml布局,并在您的Activity中设置setContentView(R.layout.yourLayout),也可以设置一个空白布局并仅显示AlertDialog。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句