是否可以在点击小部件时启动一个对话框,或者我是否必须在点击小部件时启动一个 Activity 然后是一个对话框?
最佳答案
我相信你已经解决了这个问题,但我还是会写在这里,以防其他像我一样的人找到这个答案。
要通过单击小部件启动对话框,您可以定义一个样式类似于对话框的 Activity ,并在单击小部件时启动它。
首先在 list 中添加 Activity ,我们称之为DialogWidgetActivity
<activity
android:name=".DialogWidgetActivity"
android:theme="@android:style/Theme.Dialog"
...
/>
然后在您的 WidgetProvider 中,我们称它为 MyWidgetProvider
将小部件的点击与 Activity 的启动绑定(bind)
public class MyWidgetProvider extends AppWidgetProvider {
public void onUpdate(Context context, AppWidgetManager appWidgetManager,
int[] appWidgetIds) {
final int N = appWidgetIds.length;
// Perform this loop procedure for each App Widget that belongs to this
// provider
for (int i = 0; i < N; i++) {
int appWidgetId = appWidgetIds[i];
// Create an Intent to launch the activity-dialog
Intent intent = new Intent(context, DialogWidgetActivity.class);
PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, 0);
// Get the layout for the App Widget and attach an on-click listener
// to it
RemoteViews views = new RemoteViews(context.getPackageName(),
R.layout.widget);
views.setOnClickPendingIntent(R.id.widget_container, pendingIntent);
// Tell the AppWidgetManager to perform an update on the current app
// widget
appWidgetManager.updateAppWidget(appWidgetId, views);
}
}
}
请注意,这里我们已将 Activity 的启动绑定(bind)到单击对话框的 widget_container 元素。您可以通过将 id widget_container android:id="@+id/widget_container"
分配给小部件布局的根元素来轻松实现这一点。
然后您可以编写您的 Activity 对话框及其布局,就像您为正常的全屏 Activity 所做的那样。
我的消息来源是 this answer和 the Android documentation .
希望我有所帮助:)
关于android - 小部件在单击时启动对话框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5101062/