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

每個小部件顯示不同的數據。更具體地說,每個小部件顯示一個公共汽車站的巴士時間。當創建一個新的小部件時,我讓用戶選擇公交站點。 –

相關問題