2012-02-11 12 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機能に入ると思いますか?デバッグのように?そこにあれば、別の行動が見えますか? P.S.おそらくより良い – Jackie

+0

また、私はあなたが右の「パッケージ= 『Fart.Widget』」あなたのAndroidManifest.xml内を持っていることを前提とし:-)可能性はnullポインタを避けるために、「ActionOne」.equals(intent.getActionを())を使用するには?通常は、新しいRemoteView(context.getPackageName()、R.layout.widget_layout)を使用する方が良いでしょう。 – Jackie

+0

チップジャッキーありがとう!上記のコードを編集しましたが、結果は得られません。 :( –

答えて

3

私はあなたを救うためにここにいます。

1)onUpdateオーバーライドがあるため、この行の例のための方法の始まり)

super.onUpdate(context, appWidgetManager, appWidgetIds); 

2)に(呼び出す必要があります:あなたの意図を無視することができ

intent.setAction("ActionOne"); 

、そのコードは、あなたはonReceiveのifに落ちるでしょう。それは、この記事で行われているように、それは実際の活動ではありませんので、私は私のクラス名を変更するdは、最後のノートでAndroid keeps caching my intents Extras, how to declare a pending intent that keeps fresh extras?

一意の識別子を追加します。

乾杯。

関連する問題