私はAndroidプログラミングに不慣れで、これを何時間も理解しようとしていますが、それでも機能させることができません。2つのボタンを持つウィジェットを作成しています。1つのボタン(アクティビティを呼び出すボタン)は正常に機能しますが、画像を変更することを想定した別のボタン(トグルキーなど)は機能しません。取得しNullPointerException
ます。問題を追跡しましたが、onReceiveに渡されたときにremoteViewsがnullのようです
public class Widget extends AppWidgetProvider {
boolean status = false;
private RemoteViews remoteViews;
Button bMain;
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager,
int[] appWidgetIds) {
super.onUpdate(context, appWidgetManager, appWidgetIds);
final int n = appWidgetIds.length;
for(int i = 0; i < n; i++){
final int appWidgetId = appWidgetIds[i];
remoteViews = new RemoteViews(context.getPackageName(), R.layout.widget);
Intent configIntent = new Intent(context, Main.class);
configIntent.setAction("callingActivity");
PendingIntent configPendingIntent = PendingIntent.getActivity(context,
0, configIntent, 0);
remoteViews.setOnClickPendingIntent(R.id.bWidgetMain,
configPendingIntent);
configIntent = new Intent(context, Widget.class);
configIntent.setAction("callingibFlash");
configPendingIntent = PendingIntent.getBroadcast(context, 0,
configIntent, 0);
remoteViews.setOnClickPendingIntent(R.id.ibFlash, configPendingIntent);
appWidgetManager.updateAppWidget(appWidgetIds, remoteViews);
}
}
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals("callingActivity")) {
Toast.makeText(context, "Main", Toast.LENGTH_SHORT).show();
} else if (intent.getAction().equals("callingibFlash")) {
remoteViews.setImageViewResource(R.id.ibFlash,
R.drawable.flashlight_on);
} else {
super.onReceive(context, intent);
}
}
@Override
public void onDeleted(Context context, int[] appWidgetIds) {
super.onDeleted(context, appWidgetIds);
}
}