【问题标题】: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,会出现一个对话框。

标签: android button android-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。我知道如何单独创建一个对话框。问题是如何将它与我的应用小部件结合起来。
猜你喜欢
  • 1970-01-01
  • 2021-04-04
  • 1970-01-01
  • 2020-07-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多