3

From the documentation, the constructor of RemoteViews is

public RemoteViews (String packageName, int layoutId)

The documentation says that packageName is "Name of the package that contains the layout resource".

  • Why is this needed?
  • Wouldn't the layoutId tell you everything that you need to know about the location of the layout resource?
  • What would you put as the package name?
  • Wouldn't it always be res->layout?
4

2 回答 2

3

既然 Sirlate 已经回答了“为什么需要这个?”,我将尝试回答其余的问题。

不会layoutId告诉您您需要了解的有关布局资源位置的所有信息吗?

不,layoutId像其他资源一样,ID 只是一个数字。当您通过 引用它时R.layout.some_layout,它实际上以数字的形式引用了 ID 本身。

不总是 res->layout 吗?

其实并不是!您可以将任何资源放在任何文件夹中(只要在里面/res),即使它是布局资源。/res/layout/只是一个方便的文件夹,因为 Android 已经首先定义了它。毕竟,Android 只会将资源称为 ID 号。

你会把什么作为包名?

您要使用布局的应用程序的包名称,如 Sirlate 所述。

为什么需要这个?

除了 Sirlate 的回答,如果您只有资源 ID,操作系统将无法确定布局来自哪个包/应用程序。

于 2014-08-15T06:51:27.443 回答
2

如果您有多个小部件和应用程序,并且您使用相同的密钥对它们进行了签名(使用相同的密钥对应用程序进行签名允许它们访问彼此的数据。),那么您也可以访问它们,但它们没有相同的包姓名。

于 2014-08-15T06:41:08.823 回答