如何从小部件启动对话框?
Posted
技术标签:
【中文标题】如何从小部件启动对话框?【英文标题】:How to launch a dialog box from a widget? 【发布时间】:2011-12-31 07:28:21 【问题描述】:我在任何地方都找不到单击小部件时会启动对话框的情况。你有什么想法?
我有这个代码
public void onUpdate(Context c, AppWidgetManager appWidgetManager,int[] appWidgetIds)
final int N = appWidgetIds.length;
AppWidgetManager mgr = AppWidgetManager.getInstance(c);
for (int i=0; i<N; i++)
int appWidgetId = appWidgetIds[i];
RemoteViews views = new RemoteViews(c.getPackageName(), R.layout.widget_layout);
Intent fireDialog = new Intent(c,Execute.class);
Toast test=Toast.makeText(c.getApplicationContext(),"onUpdate",Toast.LENGTH_LONG);
test.show();
PendingIntent pendingIntent = PendingIntent.getActivity(c, appWidgetId, fireDialog, PendingIntent.FLAG_UPDATE_CURRENT);
views.setOnClickPendingIntent(R.id.Button, pendingIntent);
Log.w(LOG_TAG,"Called");
mgr.updateAppWidget(appWidgetId, views);
【问题讨论】:
您能否详细说明。您的要求是否类似于单击一个按钮,然后您希望出现一个对话框。 ? 你能简单地描述一下你正在使用哪个小部件,而且我认为你可以在那个小部件的 onClickListner 中尝试一下 要求是点击app-widget,会出现一个对话框。 【参考方案1】:我在这里假设“小部件”是指“应用小部件”,即应用可以添加到用户主屏幕的交互式元素。
应用小部件不能显示Dialog
,因为这只能由Activity
完成。不过,您的应用小部件可以通过startActivity()
启动Activity
。而且,您可以通过将android:theme="@android:style/Theme.Dialog"
添加到您的元素来为您的活动设置主题,使其看起来像一个对话框。
【讨论】:
是的,我的意思是应用小部件。我还用我目前拥有的代码更新了我的问题 @JustCurious:您的代码似乎没有什么特别之处。确保您的Execute
活动具有对话框主题。【参考方案2】:
创建一个带有对话框主题的活动,并调用它
<activity android:name=".DailyPillDialog" android:label="@string/app_name" android:theme="@android:style/Theme.Dialog">
【讨论】:
当对话框主题启动时,原始应用程序也会在后台启动。有没有办法启动主应用程序?我的意思是我只想启动对话框【参考方案3】:您可以create an AlertDialog customized 满足您的需求。然后你可以从另一个小部件(比如 Button)的 onClickListener
回调中 alertDialog.show()
来显示对话框。
【讨论】:
有可能吗? @CommonsWare。我知道如何单独创建一个对话框。问题是如何将它与我的应用小部件结合起来。以上是关于如何从小部件启动对话框?的主要内容,如果未能解决你的问题,请参考以下文章