Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/201.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 找出RemoteView/AppWidgets使用的布局中是否存在id_Android_Android Appwidget - Fatal编程技术网

Android 找出RemoteView/AppWidgets使用的布局中是否存在id

Android 找出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

我希望有一个灵活的Appwidget,它可以调查关联布局中包含哪些视图,哪些不包含。通常我会使用findViewByID查看它是否返回任何ID,但这在appWidgets中是不可能的。我该怎么做

我尝试了context.getResources.getIdentifiername、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());
    }
}
我该怎么做

好吧,你不能。没有用于此的API,而且您的流程中的RemoteView实例甚至不查看布局资源。它只是将该ID和其他值一起传递给另一个进程进行渲染


没有什么可以阻止您自己的代码膨胀布局,然后对膨胀的布局而不是RemoteView执行这些检查。这感觉就像用别克打苍蝇;我怀疑对于您试图解决的任何问题都有更简单的解决方案。

为什么不定义一个可以发送给提供商的ViewModel/POJO类,该类准确地定义哪些内容应该可见,哪些内容不应该可见,所以你可以清楚地知道你应该如何构建布局?我想使用一个智能应用程序小部件来调查布局,然后它知道它需要哪些组件来计算数据,好吧,但是当我有一个appwidet onUpdate方法时,从何处获取LayoutFlator?@Alex:我不明白这个问题。如果您的意思是如何从onUpdate方法创建LayoutInflater,请调用LayoutInflater.fromcontext。同样,我认为会有比这更好的解决方案。效果很好,谢谢。事实上,这个解决方案相当不错。我有不同的倒计时布局,根据布局提供的内容,appwidget现在可以用数据填充它。现在无需跟踪哪些布局需要哪些数据。