1

アプリウィジェットは、ホーム画面に最初に追加したときに構成する必要があります。ユーザーがウィジェットを追加した直後に構成ビューを開きたい。

AppWidgetProviderイベントがないonCreatedので、イベントの構成アクティビティを表示し、構成がすでに表示されていることを示すonUpdateブール値を格納します。SharedConfigurationもっと簡単な方法はありますか?

4

2 に答える 2

6

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

それはあなたが求めているものを手に入れるでしょう。

于 2012-11-13T21:38:37.467 に答える
0

onEnabled関数に追加してみてください。onEnabledは、アプリウィジェットが画面に追加されたときに呼び出されます

onEnabled(Context)これは、AppWidgetのインスタンスが初めて作成されたときに呼び出されます。たとえば、ユーザーがApp Widgetの2つのインスタンスを追加した場合、これは最初にのみ呼び出されます。新しいデータベースを開く必要がある場合、またはすべてのApp Widgetインスタンスに対して1回だけ実行する必要がある他のセットアップを実行する必要がある場合は、これを実行するのに適した場所です。

例として

 @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); 
    }

これは、ウィジェットが初めて作成されたときにウィジェットの外観を設定するために初めて呼び出されます

ご不明な点がございましたら、コメント欄でお気軽にお問い合わせください:)

于 2012-11-12T05:44:10.553 に答える