我想有一个灵活的Appwidget,它调查相关布局中包含哪些视图,哪些不包含。通常我会使用findViewByID来查看它是否返回任何ID,但这在appWidgets中是不可能的。我怎样才能做到这一点?
我尝试了context.getResources()。getIdentifier(name,“id”,context.getPackageName())但是这将始终返回一个有效的id,因为id是由另一个布局文件定义的。我需要找出我当前的布局是否包含id。
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());
}
}
我怎样才能做到这一点?
AFAIK,你做不到。没有这个API,而AFAIK过程中的RemoteViews
实例甚至都没有查看布局资源。它只是将该ID与您的其他值一起传递给另一个进程进行渲染。
没有什么可以阻止你自己的代码膨胀布局,然后对你膨胀的布局而不是RemoteViews
进行这些类型的检查。这就像用别克拍苍蝇一样;我怀疑对于你要解决的任何问题都有更简单的解决方案。