我收到错误“加载小部件时出现问题”。我试图创建一个简单地翻转数字值 1 和 2 的小部件。但它没有被加载。另外,我的 logcat 是空的,所以无法找出问题所在。我尝试清理项目,重新安装小部件,但仍然是同样的问题。
这是我的 DemoUI.java
package com.example.widget2;
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.os.Bundle;
import android.util.Log;
import android.widget.RemoteViews;
import android.widget.Toast;
public class DemoUI extends AppWidgetProvider {
public static String MY_WIDGET_UPDATE="ACTION_BUTTON1";
RemoteViews remoteViews;
@Override
public void onReceive(Context context, Intent intent){
super.onReceive(context, intent);
if(intent.getAction().equals(MY_WIDGET_UPDATE)){
Bundle b = intent.getExtras();
if(b != null) {
int num = (Integer) b.get("num");
Toast.makeText(context, num, Toast.LENGTH_LONG).show();
}
}
}
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager,int []appWidgetIds){
int num=1;
ComponentName comp=new ComponentName(context,DemoUI.class);
int []allWidgetIds=appWidgetManager.getAppWidgetIds(comp);
for(int widgetIds:allWidgetIds){
//num=(num+1)%3;
num++;
remoteViews=new RemoteViews(context.getPackageName(),R.layout.main);
Log.w("WidgetExample2",String.valueOf(num));
remoteViews.setTextViewText(R.id.text1, String.valueOf(num));
//register listener
Intent intent=new Intent(context,DemoUI.class);
//intent.setAction(AppWidgetManager.ACTION_APPWIDGET_UPDATE);
intent.setAction(MY_WIDGET_UPDATE);
//intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS, appWidgetIds);
intent.putExtra("num", num++);
PendingIntent pendingIntent = PendingIntent.getBroadcast(context,0,intent,PendingIntent.FLAG_UPDATE_CURRENT);
remoteViews.setOnClickPendingIntent(R.id.button1, pendingIntent);
//committing changes to the widget
appWidgetManager.updateAppWidget(widgetIds, remoteViews);
}
}
}
//我的清单
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.widget2"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="17" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<receiver android:name="com.example.widget2.DemoUI">
<intent-filter >
<action
android:name="android.appwidget.action.APPWIDGET_UPDATE"/>
</intent-filter>
<meta-data
android:name="android.appwidget.provider"
android:resource="@xml/info"/>
</receiver>
</application>
</manifest>
//main.xml在layout文件夹里面
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<View
android:layout_width="1dp"
android:layout_height="30dp"/>
<TextView
android:id="@+id/text1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="@string/someText"
/>
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/refresh"
android:layout_gravity="center"
android:onClick="showText"
/>
<CheckBox
android:id="@+id/check"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/update"
android:layout_gravity="center"
android:onClick="UpdateAutomatically"
/>
</LinearLayout>
//xml文件夹内的info.xml
<?xml version="1.0" encoding="utf-8"?>
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
android:initialLayout="@layout/main"
android:minWidth="146dp"
android:minHeight="72dp"
android:updatePeriodMillis="300000"
>
</appwidget-provider>