0

我有一個小部件,我使用AlarmManager更新,它工作正常。OnClick與小工具中的AlarmManager一起工作對我來說不會工作

現在我想添加一個onClick事件。我的問題是,我從來沒有得到onClick火災?或至少由我的onRecive處理。

@Override 
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) { 
// TODO Auto-generated method stub 
super.onUpdate(context, appWidgetManager, appWidgetIds); 

final int N = appWidgetIds.length; 
     for (int i=0; i<N; i++) { 
      int appWidgetId = appWidgetIds[i]; 
      updateAppWidget(context, appWidgetManager, appWidgetId); 

      //Toast.makeText(context, "onUpdate(): " + String.valueOf(i) + " : " + String.valueOf(appWidgetId), Toast.LENGTH_LONG).show(); 
     } 

} 

public static void updateAppWidget(Context context, AppWidgetManager appWidgetManager, int appWidgetId){ 
. 
. 
. 
RemoteViews updateViews = new RemoteViews(context.getPackageName(),R.layout.widget_layout); 

updateViews.setTextViewText(R.id.widgettext, "[" + String.valueOf(appWidgetId) + "]" + strWidgetText); 


Intent intent = new Intent(context, MyWidgetProvider.class); 
intent.setAction(MY_WIDGET_CLICK); 
PendingIntent pendingIntent = PendingIntent.getBroadcast(context,1, intent, 0); 

updateViews.setOnClickPendingIntent(R.id.toggle_button_widget, pendingIntent); 
appWidgetManager.updateAppWidget(appWidgetId, updateViews); 

而且我onRecive看起來像這樣

public void onReceive(Context context, Intent intent) { 
// TODO Auto-generated method stub 
super.onReceive(context, intent); 

if(MY_WIDGET_UPDATE.equals(intent.getAction())){ 

    Bundle extras = intent.getExtras(); 
    if(extras!=null) { 
    AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context); 
    ComponentName thisAppWidget = new ComponentName(context.getPackageName(), MyWidgetProvider.class.getName()); 
    int[] appWidgetIds = appWidgetManager.getAppWidgetIds(thisAppWidget); 

    onUpdate(context, appWidgetManager, appWidgetIds); 
    } else if (MY_WIDGET_CLICK.equals(intent.getAction())) { 
     Toast.makeText(context, "onClick()", Toast.LENGTH_LONG).show(); 
    } 

Toast.makeText(context, "onReceiver()" + intent.getAction(), Toast.LENGTH_LONG).show(); 
} 
} 

正如你可以看到我有一個麪包,以便其報警說被解僱了,我只得到MY_WIDGET_UPDATE不如行動

而且清單

 <receiver android:name="company.se.MyWidgetProvider" android:label="News Nobwidget"> 
      <intent-filter> 
       <action android:name="android.appwidget.action.APPWIDGET_UPDATE" /> 
          </intent-filter> 

      <intent-filter> 
       <action android:name="MY_OWN_WIDGET_UPDATE" /> 
       <action android:name="MY_OWN_WIDGET_ONCLICK" /> 
      </intent-filter> 

      <meta-data android:name="android.appwidget.provider" 
       android:resource="@xml/widget_info" /> 
     </receiver> 

     <activity android:name="company.se.HelloWidgetConfig" android:label="Hello Widget Config"> 
      <intent-filter> 
       <action android:name="android.appwidget.action.APPWIDGET_CONFIGURE" /> 
      </intent-filter> 
     </activity> 


    </application> 
    <uses-sdk android:minSdkVersion="10" /> 

</manifest> 

我對Android很新,所以任何幫助表示讚賞;)

我想這是我的清單過濾onClick事件。有人知道你是否可以看到哪些事件通過Eclipse調試器觸發?

/Olle

回答

0

笨我!

發現錯誤,它沒有什麼只有Android才能做壞編程。

我有嵌套 如果(臨時演員!= null,則否則,如果(MY_WIDGET_CLICK.equals(intent.getAction())),而不是如果(MY_WIDGET_UPDATE.equals(intent.getAction()))

所以其餘的代碼工作!希望我沒有混淆任何人。

/Olle