我的應用程序小部件首次添加到主屏幕時需要進行配置。我想在用戶添加小部件後立即打開配置視圖。如何僅在首次創建應用部件時才顯示動作?
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 –