0

我的应用程序小部件首次添加到主屏幕时需要进行配置。我想在用户添加小部件后立即打开配置视图。如何仅在首次创建应用部件时才显示动作?

AppWidgetProvider没有onCreated事件,所以我展示的onUpdate事件confugration活动,并存储在SharedConfiguration这标志着该配置已经表明一个布尔值。有更容易的方法吗?

回答

3

在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(); 

这会得到你想要的。

+0

谢谢!更多信息:http://developer.android.com/guide/topics/appwidgets/index.html#Configuring –

0

尝试将其添加到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); 
    } 

这将是卡莱在第一时间设置控件的外观时首次

创建的小部件,如果你有任何问题,请随时在评论中问我:)

+0

据我所知,onEnabled只有在widget的第一个实例被添加到主屏幕时才会被调用。但是,我允许用户添加多个相同类型的应用程序窗口小部件,并且每个都需要自己的配置。所以如果我正确理解文档,onEnabled将只会被调用第一个小部件。 –

+0

啊对不起,我想我误解了你的问题,因为现在我没有比使用sharedpreference更简单的想法,但我可以问,你的第一个小工具和其他小工具有什么不同? –

+0

每个小部件显示不同的数据。更具体地说,每个小部件显示一个公共汽车站的巴士时间。当创建一个新的小部件时,我让用户选择公交站点。 –

相关问题