2015-04-01 52 views
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); 
} 

任何人的帮助,好吗?先谢谢你。

回答

相关问题