2012-02-11 52 views
3

基本上我已經有了這個小工具,這是應該表現出吐司,一旦它被點擊。Android小工具將不會有一個點擊

public class WidgetActivity extends AppWidgetProvider { 


@Override 
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) { 
    for (int i = 0; i < appWidgetIds.length; i++) { 

     int appWidgetId = appWidgetIds[i]; 
     Intent intent = new Intent(context, WidgetActivity.class); 
     intent.setAction("ActionOne"); 
     PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, intent, 0); 
     RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget_layout); 
     views.setOnClickPendingIntent(R.id.LinLayWiget, pendingIntent); 
     appWidgetManager.updateAppWidget(appWidgetId, views); 

    } 

} 



@Override 
public void onReceive(Context context, Intent intent) { 

    Log.e("YYY","YYYY"); 
    Toast.makeText(context, "AAA", 1500).show(); 

    if (intent.getAction().equals("ActionOne")) { 

     Log.e("X","X"); 
     Toast.makeText(context, "I'm CLICKED!", 1500).show(); 

     } 
    super.onReceive(context, intent); 
} 




} 

清單:

... 
     <receiver android:name="WidgetActivity" android:label="FXMaster" android:icon="@drawable/assiconwi"> 

      <meta-data 
      android:name="android.appwidget.provider" 
      android:resource="@xml/widgetprovider" /> 
       <intent-filter> 
         <action android:name="android.appwidget.action.APPWIDGET_UPDATE"></action> 
       </intent-filter> 
     </receiver> 
... 

但是一旦控件被點擊時,沒有任何反應。任何想法可能是錯誤的?

謝謝!

+0

你看到它進入的onResume功能?就像調試?如果你在那裏看到不同的行動?附:可能更好地使用「ActionOne」 .equals(intent.getAction()),以避免:-) – Jackie 2012-02-11 17:11:43

+0

可能的空指針此外,我認爲你有「包=‘Fart.Widget’」在你的AndroidManifest.xml吧?通常最好使用...新的RemoteViews(context.getPackageName(),R.layout.widget_layout); – Jackie 2012-02-11 17:18:19

+0

謝謝Jackie的提示!我編輯了代碼,見上面,但它仍然沒有結果。 :( – 2012-02-11 18:36:35

回答

3

我在這裏拯救你。

1)onUpdate倍率應調用(在例如該方法由於存在這些線的開頭)

super.onUpdate(context, appWidgetManager, appWidgetIds); 

2):

intent.setAction("ActionOne"); 

你的意圖可以被忽略,所以代碼如果在onReceive中,則落入該if。添加一個唯一的標識符就像是在這個崗位Android keeps caching my intents Extras, how to declare a pending intent that keeps fresh extras?

在最後要注意做,我D轉換我的類名,因爲它不是一個實際的活動。

乾杯。