0
我是全新開發用於android的小部件,所以如果這是一個愚蠢的問題,請耐心等待。我正在寫我自己的MP3播放器,以滿足我的需求。我把它作爲一個應用程序運行得很好,但現在我想將它拉出到主屏幕小部件中(更多的是學習練習,而不是其他任何內容)。每個ImageView上的Android小部件點擊實例化新對象
我將MP3播放器的邏輯分成了一個單獨的類,當我嘗試使用按鈕單擊從該類中的對象時,它可以正常工作。問題是,我似乎無法在下次點擊該按鈕或其他任何按鈕時使用同一個對象。相反,每次在我的小部件中點擊一個按鈕時,它都會重新創建一個新對象。我只是試圖讓我的Play /暫停ImageView功能正常。
這裏是
package com.example.musicplayerforburrito;
import android.app.PendingIntent;
import android.appwidget.AppWidgetManager;
import android.appwidget.AppWidgetProvider;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.widget.RemoteViews;
public class MyWidgetProvider extends AppWidgetProvider {
public static String WIDGET_PLAY_BUTTON = "android.appwidget.action.PLAY_PAUSE_WIDGETS";
MusicPlayerClass mpc = new MusicPlayerClass();
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.widget_layout);
ComponentName watchWidget = new ComponentName(context, MyWidgetProvider.class);
remoteViews.setOnClickPendingIntent(R.id.playpausewidget, getPendingSelfIntent(context, WIDGET_PLAY_BUTTON));
appWidgetManager.updateAppWidget(watchWidget, remoteViews);
}
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
super.onReceive(context, intent);
AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context);
RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.widget_layout);
ComponentName watchWidget = new ComponentName(context, MyWidgetProvider.class);
if (WIDGET_PLAY_BUTTON.equals(intent.getAction())) {
if(!mpc.hasFolders)
mpc.Initialize();
if(!mpc.isPlaying)
{
remoteViews.setTextViewText(R.id.mp3filename, mpc.StartSong());
remoteViews.setImageViewResource(R.id.playpausewidget, R.drawable.pause);
}
else
{
mpc.PauseMusic();
remoteViews.setImageViewResource(R.id.playpausewidget, R.drawable.play);
}
appWidgetManager.updateAppWidget(watchWidget, remoteViews);
}
}
protected PendingIntent getPendingSelfIntent(Context context, String action) {
Intent intent = new Intent(context, getClass());
intent.setAction(action);
return PendingIntent.getBroadcast(context, 0, intent, 0);
}
}
任何建議,將不勝感激我WidgetProvider代碼。
TIA
所以你建議我改變mpc對象(MusicPlayerClass的實例)爲靜態? –
是的,應該允許你的'MyWidgetProvider'的所有實例訪問它的同一個實例。 – CaseyB
甜的,做到了。非常感謝。 –