1
我是新來的Android(昨天開始:))
我想做一個簡單的主屏幕小部件與TextView,當你改變它的價值點擊它。
事情並不順利。它只在我點擊3次後才能起作用,然後它工作一次,永不再工作。此外,調試器在我第一次「走完」後總是崩潰。編織一個Android主屏幕小部件不會工作第二次
清單:
<application
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name">
<receiver android:name=".GeeDeeBeeDee"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
<action android:name="android.appwidget.action.APPWIDGET_CLICK" />
</intent-filter>
<meta-data
android:name="android.appwidget.provider"
android:resource="@xml/gee_dee_bee_dee_info" />
</receiver>
</application>
Widget類:
public class GeeDeeBeeDee extends AppWidgetProvider {
private int DayType = 0;
public static String APPWIDGET_CLICK = "android.appwidget.action.APPWIDGET_CLICK";
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
// There may be multiple widgets active, so update all of them
final int N = appWidgetIds.length;
for (int i = 0; i < N; i++) {
updateAppWidget(context, appWidgetManager, appWidgetIds[i]);
然後:
static void updateAppWidget(Context context, AppWidgetManager appWidgetManager,int appWidgetId)
{
RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.gee_dee_bee_dee);
Intent intent = new Intent(APPWIDGET_CLICK);
intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId);
PendingIntent pendingIntent = PendingIntent.getBroadcast(context, appWidgetId, intent, 0);
views.setOnClickPendingIntent(R.id.appwidget_text, pendingIntent);
appWidgetManager.updateAppWidget(appWidgetId, views);
}
@Override
public void onReceive(Context context, Intent intent)
{
int widgetId = 0;
if (APPWIDGET_CLICK.equals(intent.getAction()))
{
AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context);
RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.gee_dee_bee_dee);
if(DayType == 0)
remoteViews.setTextViewText(R.id.appwidget_text, "0");
else if(DayType == 1)
remoteViews.setTextViewText(R.id.appwidget_text, "1");
else if(DayType == 2)
remoteViews.setTextViewText(R.id.appwidget_text, "2");
if(DayType > 2)
DayType = 0;
Bundle extras = intent.getExtras();
if(extras!=null)
{
widgetId = extras.getInt(AppWidgetManager.EXTRA_APPWIDGET_ID, AppWidgetManager.INVALID_APPWIDGET_ID);
}
if(widgetId > 0)
appWidgetManager.updateAppWidget(widgetId, remoteViews);
}
else
super.onReceive(context, intent);
}
能
任何人的幫助,好嗎?先謝謝你。