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

任何人的幫助,好嗎?先謝謝你。

回答

相關問題