我的应用程序小部件首次添加到主屏幕时需要进行配置。我想在用户添加小部件后立即打开配置视图。如何仅在首次创建应用部件时才显示动作?
AppWidgetProvider
没有onCreated
事件,所以我展示的onUpdate
事件confugration活动,并存储在SharedConfiguration
这标志着该配置已经表明一个布尔值。有更容易的方法吗?
我的应用程序小部件首次添加到主屏幕时需要进行配置。我想在用户添加小部件后立即打开配置视图。如何仅在首次创建应用部件时才显示动作?
AppWidgetProvider
没有onCreated
事件,所以我展示的onUpdate
事件confugration活动,并存储在SharedConfiguration
这标志着该配置已经表明一个布尔值。有更容易的方法吗?
在AppWidgetProvider XML文件中有一个属性,称为android:configure
您可以使用它来指向将应用程序拖放到主屏幕时启动的活动。例如:
<?xml version="1.0" encoding="utf-8"?>
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
android:configure="com.bandsintown.WidgetSettingsActivity"
android:minWidth="250dp"
android:minHeight="110dp"
android:minResizeWidth="180dp"
android:minResizeHeight="110dp"
android:resizeMode="vertical|horizontal"
android:initialLayout="@layout/widget_layout"
android:updatePeriodMillis="10000" />
在您选择的配置活动中,用户可以做出他们想要的任何选择。您需要获取并存储小部件的ID。在onCreate
方法,得到这样的ID:
Intent intent = getIntent();
Bundle extras = intent.getExtras();
if (extras != null)
mAppWidgetId = extras.getInt(AppWidgetManager.EXTRA_APPWIDGET_ID, AppWidgetManager.INVALID_APPWIDGET_ID);
当他们已经取得了他们的选择,用它来发送一条信息给你的主屏幕小部件,它已经能够显示:
Intent intent = new Intent();
intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, mAppWidgetId);
setResult(RESULT_OK, intent);
finish();
这会得到你想要的。
尝试将其添加到onEnabled函数。当应用程序插件添加到当一个实例在App Widget是首次创建 这就是所谓的屏幕
onEnabled(上下文)onEnabled将被调用。例如,如果用户添加了两个你的App Widget的 实例,这只是第一次被调用。如果 您需要打开一个新的数据库或执行其他设置,只需要 发生一次所有App Widget实例,那么这是一个好地方 来做到这一点。
为例
@Override
public void onEnabled(Context context) {
Log.i("INDEX", "WIDGET Enabled");
AppWidgetManager mgr = AppWidgetManager.getInstance(context);
RemoteViews defaultViews = new RemoteViews(context.getPackageName(), R.layout.widget_restart);
Intent idefault = new Intent(context, MainActivity.class);
idefault.putExtra("widget", "1");
PendingIntent defaultpendingIntent = PendingIntent.getActivity(context, 0, idefault, 0);
defaultViews.setOnClickPendingIntent(R.id.headWidget, defaultpendingIntent);
ComponentName comp = new ComponentName(context.getPackageName(), Widget.class.getName());
mgr.updateAppWidget(comp, defaultViews);
}
这将是卡莱在第一时间设置控件的外观时首次
创建的小部件,如果你有任何问题,请随时在评论中问我:)
据我所知,onEnabled只有在widget的第一个实例被添加到主屏幕时才会被调用。但是,我允许用户添加多个相同类型的应用程序窗口小部件,并且每个都需要自己的配置。所以如果我正确理解文档,onEnabled将只会被调用第一个小部件。 –
啊对不起,我想我误解了你的问题,因为现在我没有比使用sharedpreference更简单的想法,但我可以问,你的第一个小工具和其他小工具有什么不同? –
每个小部件显示不同的数据。更具体地说,每个小部件显示一个公共汽车站的巴士时间。当创建一个新的小部件时,我让用户选择公交站点。 –
谢谢!更多信息:http://developer.android.com/guide/topics/appwidgets/index.html#Configuring –