2

コモンズウェア コード 'LoremWidget' に基づいてウィジェットを実装しようとしています。Github のこちらを参照してください。

問題は、クリックが機能しないことです

WidgetUpdate で、 WidgetProviderと同じ

for (int appWidgetId : appWidgetIds) 
{
 RemoteViews remoteView = new RemoteViews(context.getPackageName(), R.layout.widget);
 Intent configIntent = new Intent(context, WidgetService.class);
 PendingIntent configPendingIntent =PendingIntent.getActivity(context, 0, configIntent, 0);
 remoteView.setPendingIntentTemplate(R.id.imgNext, configPendingIntent);
 appWidgetManager.updateAppWidget(appWidgetId, remoteView);
}

マニフェストと同様に、マニフェストで

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.demo.widget"
    android:versionCode="1"
    android:versionName="1.0" >
<uses-sdk
    android:minSdkVersion="11"
    android:targetSdkVersion="17" />

<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
     <activity
         android:name=".WidgetConfig"
         android:label="@string/app_name" >
         <intent-filter>
              <action
                android:name="android.appwidget.action.APPWIDGET_CONFIGURE" />
         </intent-filter>
     </activity>
    <receiver
        android:name="BasicWidgetProvider">
        <intent-filter>
            <action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
        </intent-filter>
        <meta-data
            android:name="android.appwidget.provider"
            android:resource="@xml/widget_info" />
    </receiver>
      <service android:name="WidgetService"
               android:permission="android.permission.BIND_REMOTEVIEWS" />
</application>
</manifest>

WidgetService, similar to WidgetService

public class WidgetService extends RemoteViewsService 
{
    private static final String TAG=WidgetService.class.getName();
    @Override
    public RemoteViewsFactory onGetViewFactory(Intent intent) 
    {
        Log.d(TAG, "inside remoteview");
        return(new WidgetFactory(this.getApplicationContext(),
                                     intent));
    }
}

WidgetFactory getView method as here

public RemoteViews getViewAt(int arg0) 
    {
        Log.d(TAG, "inside the getview at");
        RemoteViews row=new RemoteViews(ctxt.getPackageName(), R.layout.widget);
            row.setViewVisibility(R.id.imgNext, View.INVISIBLE);
        Intent i=new Intent();
        Bundle extras=new Bundle();
        return(row);
    }

Questions:

1. why is widget not updating, no logs are generated infact the only log relevant to my code is

05-15 23:24:27.648: I/ActivityManager(161): START {flg=0x10000000 cmp=com.demo.widget/.WidgetService bnds=[509,299][547,337]} from pid -1

2.これはウィジェットで単純なクリックだけを実装する正しい方法ですか?他の方法はありますか?このウィジェットファクトリーが唯一の方法ですか?

4

1 に答える 1

1

これらのサンプルの本、特にこのサンプルを扱っている章を読むことを検討してください。そこに答えがあるはずです。

ウィジェットが更新されない理由

私が見るところから、サービスを指すアクティビティを作成しているためPendingIntentIntent

 Intent configIntent = new Intent(context, WidgetService.class);
 PendingIntent configPendingIntent =PendingIntent.getActivity(context, 0, configIntent, 0);
 remoteView.setPendingIntentTemplate(R.id.imgNext, configPendingIntent);

これはサンプルの動作と一致しません。

これはウィジェットで単純なクリックだけを実装する正しい方法ですか?他の方法はありますか?このウィジェットファクトリーが唯一の方法ですか?

AdapterViewこれは、アプリ ウィジェットで使用されるクリックを処理する方法です。

于 2013-05-15T18:58:35.960 に答える