1

我正在开发两个android应用程序,一个是baseApp,另一个是pluginApp。其目的是在安装相应的插件时扩展baseApp的功能。 pluginApp将包含XML布局文件,这些文件将包含我需要在baseApp中显示的'new_layouts'。有没有办法通过Inter Process Communication或类似的方式将new_layout从pluginApp传递给baseApp?是否有可能在其他应用程序中充气RemoteViews?

我尝试以下方法,没有运气 我包从pluginApp布局文件作为“RemoteViews”对象,并将其传递给baseApp,但是当我膨胀成baseApp我得到一个错误说

android.view.InflateException: Binary XML file line #9: Class not allowed to be inflated android.widget.EditText 

注意:'new_layout'包含EditText和其他元素,其中EditText是第一个子元素。

我从来没有使用过RemoteViews,也不明白它们的用途。

请指导我 1.是否可以从一个应用程序使用视图到其他应用程序? 2. RemoteViews可以用于此目的吗?如果是,那么如何? 3.为什么我得到这个错误,这是什么意思?

回答

0
  1. 是否从一个应用程序使用视图到其他应用程序是可能的?

不是直接的。

  1. 能RemoteViews被用于此目的?

是的。

如果是的话那怎么样?

大概是通过使用你已有的代码。 This pair of sample projects演示过程。

  • 为什么会出现错误
  • EditText因为不是the few widgets supported by RemoteViews之一。

    这是什么意思?

    它表明你有三种选择:

    1. 限制自己的RemoteViews支持的小部件

    2. 不要试图分享

    3. 应用程序之间的UI实现自己RemoteViews-like系统

    最后,RemoteViews仅仅是一个数据结构,它描述了如何构建UI以及如何发回非常粗糙的事件(例如,通过PendingIntent进行的点击)。除了时间和专业知识之外,没有什么能够阻止您创建自己的Parcelable数据结构,该数据结构描述如何构建比RemoteViews支持的更丰富的UI。

    +0

    Thankyou洙很多为这样一个快速和精心的回应。我可能会限制自己的可用视图。关于构建我自己的Parcelable数据结构有一个示例项目,我可以用它作为指导,因为我之前从未做过任何类似的工作 –

    +0

    @SukumarGaonkar:就构建包含构建UI的命令的Parcelable数据结构而言,不知道这个星球上的任何人是否尝试过它,除了RemoteViews本身。如果你的意思是'一般的可Parcelable',我相信这里有教程,尽管我没有任何帮助。 FWIW,我在我的书中有一章“Parcelable” - 这里是[章节预览](https://commonsware.com/Android/previews/writing-and-using-parcelables)。 – CommonsWare

    +0

    我已将我的布局限制为允许的视图,并且按预期布置,但我无法更新它们。例如。我有pendingIntents附加到每个按钮触发我的插件代码,在那里我更新我的布局的内容。但是这些更新在屏幕上不可见。我怀疑我需要调用像'updateAppWidget(thisWidget,rView);'。有关更新布局远程视图的任何指导?谢谢:) –

    相关问题