Android 小部件单击不工作?
我正在尝试基于公共软件代码“LoremWidget”实现小部件,请参见Github 问题是单击不起作用 在WidgetUpdate上,与相同 在清单中,类似于Android 小部件单击不工作?,android,android-widget,click,commonsware,Android,Android Widget,Click,Commonsware,我正在尝试基于公共软件代码“LoremWidget”实现小部件,请参见Github 问题是单击不起作用 在WidgetUpdate上,与相同 在清单中,类似于 WidgetFactory getView方法作为 问题: 1.为什么小部件没有更新,实际上没有生成日志与我的代码相关的唯一日志是 05-15 23:24:27.648:I/ActivityManager(161):从pid-1开始{flg=0x10000000 cmp=com.demo.widget/.WidgetService bn
WidgetFactory getView方法作为
问题:
1.为什么小部件没有更新,实际上没有生成日志与我的代码相关的唯一日志是
05-15 23:24:27.648:I/ActivityManager(161):从pid-1开始{flg=0x10000000 cmp=com.demo.widget/.WidgetService bnds=[509299][547337]}
<强> 2。< /强>这是实现简单点击小部件的正确方法,还有其他方法吗?这个小工厂是唯一的方式吗?
< P>你可以考虑阅读,特别是覆盖这个示例的章节,就像你在那里找到答案一样。
为什么widget没有更新
因为您正在创建一个活动pendingent
,具有指向服务的意图
,我看到:
Intent configIntent = new Intent(context, WidgetService.class);
PendingIntent configPendingIntent =PendingIntent.getActivity(context, 0, configIntent, 0);
remoteView.setPendingIntentTemplate(R.id.imgNext, configPendingIntent);
这不匹配
这是实现一个简单的点击窗口小部件的正确方法吗?还有其他方法吗?widgetfactory是唯一的方法吗
这就是你在应用程序小部件中使用的AdapterView
中处理点击的方式。当你不做修改就使用它时,LoremWidget示例是否有效?@commonware是的,它确实有效,当点击列表项时,它显示单词列表并显示祝酒词谢谢,我理解了关于适配器视图的部分,更正了它。其次,我不想执行/加载另一个活动来吐司消息,我想在单击时更新小部件本身??这些方法够了吗?请如何更新代码?@AkhilJain:欢迎您随时使用AppWidgetManager
上的updateAppWidget()
更新应用程序小部件。小部件还有一些其他代码,已经可以每隔5/10秒刷新一次视图,根据设置的计时器,视图会更新(使用updateAppWidget()
),但我希望它在单击完成时更新,很抱歉,我是小部件开发的新手,小部件在getView
方法中更新时不做任何事情。在这里,您实际上调用另一个活动来显示另一个活动,使用pendingEvent.getActivity()
,它会启动另一个活动,而我没有want@AkhilJain:“小部件有一些其他代码,已经可以每5/10秒刷新一次视图”--这对用户的电池、RAM和CPU来说不是个好主意。“我不想要这些”--然后删除该代码并替换为您想要的代码。这样,我至少可以更新小部件,但我不知道其他更新小部件UI的方法。问题仍然是,更新小部件UI
<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>
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));
}
}
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);
}
Intent configIntent = new Intent(context, WidgetService.class);
PendingIntent configPendingIntent =PendingIntent.getActivity(context, 0, configIntent, 0);
remoteView.setPendingIntentTemplate(R.id.imgNext, configPendingIntent);