java android中的可點擊小部件




0 Answers

java android onclick android-widget

開發人員文檔似乎在這裡失敗了。 我可以不假思索地創建一個靜態小部件,我甚至可以創建一個像模擬時鍾小部件一樣的小部件來更新自己,但是,我不能在我的生活中弄清楚如何創建一個小部件來響應用戶點擊的時間它。 以下是開發人員文檔為小部件活動應包含的內容提供的最佳代碼示例(唯一的其他提示是API演示,僅創建靜態小部件):

public class ExampleAppWidgetProvider extends AppWidgetProvider {
    public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
        final int N = appWidgetIds.length;

        // Perform this loop procedure for each App Widget that belongs to this provider
        for (int i=0; i<N; i++) {
            int appWidgetId = appWidgetIds[i];

            // Create an Intent to launch ExampleActivity
            Intent intent = new Intent(context, ExampleActivity.class);
            PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, 0);

            // Get the layout for the App Widget and attach an on-click listener to the button
            RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.appwidget_provider_layout);
            views.setOnClickPendingIntent(R.id.button, pendingIntent);

            // Tell the AppWidgetManager to perform an update on the current App Widget
            appWidgetManager.updateAppWidget(appWidgetId, views);
        }
    }
}

來自: Android開發者文檔的小部件頁面

因此,看起來在單擊小部件時調用掛起的intent,這是基於intent(我不太確定intent和掛起的intent之間的區別是什麼),而intent是針對ExampleActivity類的。 所以我讓我的示例活動類成為一個簡單的活動,在創建時,會創建一個mediaplayer對象,然後啟動它(它不會釋放對象,所以它最終會崩潰,這是它的代碼:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    MediaPlayer mp = MediaPlayer.create(getApplicationContext(), R.raw.sound);
    mp.start();
}

但是,當我將小部件添加到主屏幕並單擊它時,實際上沒有播放任何內容,當我將更新計時器設置為幾百毫秒時(在appwidget提供程序xml文件中)。 此外,我設置了斷點,並發現它不僅沒有達到活動,而且我設置的斷點也不會被觸發。 (我仍然沒有弄清楚為什麼會這樣),但是,logcat似乎表明正在運行活動類文件。

那麼,有什麼辦法可以讓appwidget響應點擊嗎? 因為onClickPendingIntent()方法是我找到的onClick類型的方法最接近。

非常感謝你。




Related