我正在开发一个小部件应用程序,我偶然发现的第一个障碍是让用户通过配置活动从不同的布局中选择,并在窗口小部件选项卡中只放置一个窗口小部件。
我通过为窗口小部件创建不同的布局并仅注册一个接收器和一个提供者来解决这个问题。在配置活动中,用户从轮播中选择并使用switch语句来设置正确的布局,如下所示:
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(getBaseContext());
switch (carousel.getSelectedItemPosition()){
case 1:
RemoteViews views = new RemoteViews(getBaseContext().getPackageName(),
R.layout.first);
appWidgetManager.updateAppWidget(mAppWidgetId, views);
break;
case 2:
RemoteViews views2 = new RemoteViews(getBaseContext().getPackageName(),
R.layout.second);
appWidgetManager.updateAppWidget(mAppWidgetId, views2);
break;
没关系,我得到了我想要的结果,但是,现在我面临一个新问题,即我想为小部件设置一个OnClick事件,将在当前布局和另一个布局之间切换,问题这是我无法获得用户为该特定小部件实例选择的布局,因为在做任何事情之前我必须在小部件提供者处定义我想要编辑的布局,如下所示:
RemoteViews views2 = new RemoteViews(context.getPackageName(),
R.layout.second);
我搜索了一个解决方案,我认为我可以使用getLayoutId()方法来获取布局,但是,除非您自己指定布局,否则无法实现。
我目前陷入困境,任何帮助都非常感谢。谢谢