根据文档,RemoteViews
的构造函数是
public RemoteViews (String packageName, int layoutId)
文档中说packageName
是"包含布局资源的包名"。
- 为什么需要这个?
- 难道
layoutId
不会告诉你所有你需要知道的布局资源的位置吗? - 你会把什么作为包的名字?
- 不总是res->layout吗?
既然Sirlate已经回答了"为什么需要这个?",我将尝试回答其余的问题。
难道
layoutId
不能告诉你所有你需要知道的关于布局资源位置的信息吗?
不,layoutId
和其他资源一样,ID只是一个数字。当您通过R.layout.some_layout
引用它时,它实际上引用了ID本身,作为一个数字。
不总是res->layout吗?
其实,不是!您可以将任何资源放在任何文件夹中(只要在/res
内),即使它是布局资源。/res/layout/
只是一个方便的文件夹,因为Android已经在第一处定义了它。毕竟,Android只会将资源引用为ID号。
你会把什么作为包的名字?
你想要使用布局的应用程序的包名,如Sirlate所述。
为什么需要这个?
除了Sirlate的回答,如果你只有一个资源ID,操作系统将不可能决定从哪个包/应用程序布局。
如果您有多个小部件和应用程序,并且您使用相同的密钥对它们进行签名(使用相同的密钥对应用程序进行签名允许它们访问彼此的数据),那么您也可以访问它们,它们没有相同的包名称