Android 找出RemoteView/AppWidgets使用的布局中是否存在id
我希望有一个灵活的Appwidget,它可以调查关联布局中包含哪些视图,哪些不包含。通常我会使用findViewByID查看它是否返回任何ID,但这在appWidgets中是不可能的。我该怎么做 我尝试了context.getResources.getIdentifiername、id、context.getPackageName,但这将始终返回有效的id,因为该id由另一个布局文件定义。我需要找出我当前的布局是否包含idAndroid 找出RemoteView/AppWidgets使用的布局中是否存在id,android,android-appwidget,Android,Android Appwidget,我希望有一个灵活的Appwidget,它可以调查关联布局中包含哪些视图,哪些不包含。通常我会使用findViewByID查看它是否返回任何ID,但这在appWidgets中是不可能的。我该怎么做 我尝试了context.getResources.getIdentifiername、id、context.getPackageName,但这将始终返回有效的id,因为该id由另一个布局文件定义。我需要找出我当前的布局是否包含id public class MyWidget extends AppWid
public class MyWidget extends AppWidgetProvider {
static void updateAppWidget(Context context, AppWidgetManager appWidgetManager,
int appWidgetId) {
String idName="idName";
String layoutName="layoutName";
RemoteViews views = new RemoteViews(context.getPackageName(), Tools.getLayoutResource(context,layoutName));
boolean idExistsInLayout=context.getResources().getIdentifier(name, "id", context.getPackageName());
}
}
我该怎么做
好吧,你不能。没有用于此的API,而且您的流程中的RemoteView实例甚至不查看布局资源。它只是将该ID和其他值一起传递给另一个进程进行渲染
没有什么可以阻止您自己的代码膨胀布局,然后对膨胀的布局而不是RemoteView执行这些检查。这感觉就像用别克打苍蝇;我怀疑对于您试图解决的任何问题都有更简单的解决方案。为什么不定义一个可以发送给提供商的ViewModel/POJO类,该类准确地定义哪些内容应该可见,哪些内容不应该可见,所以你可以清楚地知道你应该如何构建布局?我想使用一个智能应用程序小部件来调查布局,然后它知道它需要哪些组件来计算数据,好吧,但是当我有一个appwidet onUpdate方法时,从何处获取LayoutFlator?@Alex:我不明白这个问题。如果您的意思是如何从onUpdate方法创建LayoutInflater,请调用LayoutInflater.fromcontext。同样,我认为会有比这更好的解决方案。效果很好,谢谢。事实上,这个解决方案相当不错。我有不同的倒计时布局,根据布局提供的内容,appwidget现在可以用数据填充它。现在无需跟踪哪些布局需要哪些数据。