【问题标题】:remoteViews.setOnClickPendingIntent(R.id.widget, pendingIntent);remoteViews.setOnClickPendingIntent(R.id.widget, pendingIntent);
【发布时间】:2015-05-25 21:35:20
【问题描述】:

我买了最烂的书“EVER”来学习安卓编程。这是:Android App Development For Dummies,第 3 版

我向你保证,这不是为了“傻瓜”!

我的问题是:(这是小部件代码的一部分) remoteViews.setOnClickPendingIntent(R.id.widget, pendingIntent);

当我输入代码时,android studio 用红色标记了“widget”这个词。我检查了 R 文件,但我找不到它。我检查了每个文件。无处可寻。我从 Wiley 客户支持得到的答案是:

请参考http://developer.android.com/reference/android/widget/RemoteViews.html setOnClickPendingIntent(int viewId, PendingIntent pendingIntent) 相当于调用 setOnClickListener(android.view.View.OnClickListener) 来启动提供的 PendingIntent。当设置集合中项目的点击动作时(例如 ListView、StackView 等),此方法将不起作用。相反,将 {@link RemoteViews#setPendingIntentTemplate(int, PendingIntent) 与 RemoteViews#setOnClickFillInIntent(int, Intent) 结合使用。 参数 viewId 单击时将触发 PendingIntent 的视图的 id pendingIntent 用户点击时发送的 PendingIntent。

“假人”无法理解所有这些东西。

是错字还是我做错了什么?

(我没有写完整的代码。如果你愿意,我会很乐意这样做)

提前谢谢你

【问题讨论】:

    标签: android android-widget r.java-file remoteview


    【解决方案1】:

    我不认为这本书很糟糕,但我确实理解你的沮丧。我在整本书中发现了许多错别字,这个例子也不例外。书中的印刷版是

    remoteViews.setOnClickPendingIntent(R.id.widget, pendingIntent);
    

    但实际上应该是这样的:

    remoteViews.setOnClickPendingIntent(R.id.phone_state, pendingIntent);
    

    phone_stateres/layout/app_widget.xml 文件中 ImageView 的 ID。

    【讨论】:

    • 非常感谢您的宝贵时间。我确实认为这对初学者来说是一本糟糕的书。我不推荐它。它正在按照你说的方式工作。再次感谢。
    • 不客气。他们当然应该花更多的时间来编辑这本书。特别是对于编程语言,拼写错误可能意味着学习和永远放弃它之间的所有区别。我不知道为什么上面的源代码不是从作者的 IDE 中复制的。它永远不会像打印的那样工作;这意味着由于某种原因,他手动输入了源代码。
    • 经过进一步审查,是的,这是一本非常糟糕的书。我无法让它作为一个小部件工作。我什至下载了作者的源代码(顺便说一下,与书籍版本有很多不同!),它仍然不能作为小部件运行。我记得当 DOS for Dummies 出来时——显示我的年龄——那是有史以来最伟大的事情。他们真的降低了标准。
    • :-) 我不在乎我的 23 欧元。问题是我本可以买一些有用的东西。这本书在亚马逊上怎么可能有 4 条 5 星的评论? (“剧透警报”)他们必须以某种方式宣传他们的书。从那时起,没有人运行过代码。我以为我是唯一一个有这个问题的人。还有对 Android 开发者网站的引用……我的意思是,如果我想从该网站阅读,我就不会买这本书。
    【解决方案2】:

    R 类是根据您放入 res 文件夹的资源自动生成的。要在 R 类中存在字段 R.id.widget,您必须在 res/layout 或类似文件夹下的任何布局文件中的某处声明了带有 android:id="@id/widget" 的元素。

    如果您阅读过任何类型的 Android 编程介绍(例如官方指南/教程),这一点就会很明显。有一个关于资源的页面和Rhttp://developer.android.com/guide/topics/resources/accessing-resources.html。我对您所指的这本书没有经验,但是如果它自称是对 Android 的介绍而没有提及资源系统、如何在 XML 中声明布局以及如何从代码中使用它们,我会感到惊讶。我不是贬义的意思,但是你真的读过这本书吗,或者只是碰巧直接跳到第 15 章并期望理解所有细节和概念,而不是阅读它们......?

    【讨论】:

    • 感谢您的回复。我没有声明一个名为“widget”的元素。不。我没有跳到第 15 章。这个应用程序是本书中第一个编写的应用程序。
    猜你喜欢
    • 2012-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多