问题标签 [commonsware]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
152 浏览

android - communication between an activity and a service

On page 550 of the commonsware 4.0 book, the Messenger is discussed and it is explained how the Activity can attach extra data when starting the service that allows the service to send messages back to activity anytime it wants.

It then explains how the service can send data back to the Activity anytime it wants.

I have this implemented and currently working in my app.

However I have a need for the activity to talk to the service on other occasions - many times during the life of the activity. What tool or conduit allows the service to send messages to the Activity any time it wants?

Thanks, Gary

0 投票
1 回答
1800 浏览

android - 无法暂停活动,尚未创建内容视图

我抓住了The Busy Coder's Guide to Android Development 4.2中演示的EU4You 示例项目(由 StackOverflow 上的 Mark Murphy aka commonsware提供)。跟随这个示例项目可能更容易,但我会尝试在问题中发布相关的代码部分。您还需要导入ActionBarSherlock项目。您还需要将 Java 编译器设置为 1.6(以允许使用 @Override 注释)。

注意:我已将 min-sdk 更改为 8(2.3,Froyo),将 target-sdk 更改为 16(4.1,Ice Cream Sandwich)。

注意:我已将countriesframelayout id更改为left_pane并将framelayout id 更改detailsright_pane.

主布局文件(layout-large-land):

主要布局文件:

示例应用程序的原始版本有两个活动(确切地说是 SherlockFragmentActivities)。

  1. EU4You - 加载适当的布局(默认或横向大)。如果默认,则在 SherlockListFragment 中加载国家列表。如果横向大,加载列表和详细信息片段以显示所选国家。
  2. DetailsActivity - 在使用横向大布局时通过 DetailsFragment 加载所选国家。

如果您单击列表片段中的国家/地区,EU4You(主要托管活动)会检查 DetailsFragment 的存在和可见性。如果存在,它会在该片段中加载国家网站。如果没有,它会触发 DetailsActivity,然后处理添加 DetailsFragment(然后加载给定国家/地区的网站)。

这很好用,就像在平板电脑和手机上支持多种屏幕布局的典型应用程序一样。

我的问题是我想删除 DetailsActivity 并坚持一个活动。每当我不在大横向布局中时(换句话说,我在平板电脑上的纵向布局或任何方向的手机上),我都想用详细信息片段交换(替换)列表片段。所以我所做的是在 EU4You SherlockFragmentActivity 中更改了以下内容:

原始(对注释中提到的框架布局名称进行了轻微的命名修改......国家是left_pane,细节是right_pane):

我修改后的单一活动版本

这按预期工作。我单击列表中的网站(在平板电脑上以纵向模式,或在任何方向的手机上),详细信息显示在详细信息片段中,它替换了网站列表片段。但是,如果我在显示国家/地区详细信息时单击设备上的主页按钮,我会收到强制关闭错误,并显示以下 logcat 详细信息(仅使用默认布局,只有一个 left_pane 框架布局......我没有当存在 left_pane 和 right_pane 时,平板电脑上的横向方向存在此问题):

如果我从上面的代码中删除以下行,我可以阻止此错误的发生:

我确实需要能够将替换事务添加到后台堆栈,所以我不能删除这一行(这个示例应用程序是我真正的应用程序的基础,它有更多的东西,但我用它来简化我的问题)。

所以两个问题:

  1. 为什么会这样?
  2. 我该如何解决它(也许是另一种方法)?

需要注意的一点是,在我的实际应用程序中,此逻辑必须全部位于操作栏中的选项卡内(ActionBarSherlock,因为我必须支持回到版本 2.3 (Froyo))。


更新(2012 年 11 月 22 日 13:27 EST)

我在GitHub 上发布了一个示例项目。我是 Eclipse 和 Android 开发的新手,所以我可能没有包含我需要的所有东西(工作空间不包括在内,我认为 ActionBarSherlock 项目不包括在内......它需要导入(可以在这里找到) )。

0 投票
1 回答
1478 浏览

android - 自动链接在 HTC 上不起作用 - HtcLinkifyDispatcher

我在我的 Android 应用程序中使用set android:autoLinkto来启用可点击链接。但是,如果我在升级到 ICS 的 HTC Desire S 上运行它,当我点击其中一个链接时,会出现以下异常webTextView

尝试注册HtcLinkifyDispatcherActivity让我无处可去,因为该课程不在我的构建路径上。

0 投票
4 回答
3708 浏览

android - 结合 localbroadcastmanager sendorderedbroadcast 发送广播

我想实现 CommonsWare 在这篇博文中描述的内容:http ://commonsware.com/blog/2010/08/11/activity-notification-ordered-broadcast.html 。这篇文章很有意义,我可以在这里浏览示例源:https ://github.com/commonsguy/cw-advandroid/tree/master/Broadcast 。

我很好奇的是LocalBroadcastManager.getInstance(UnzipService.this).sendBroadcast(broadcast);,服务内部的调用是否仍会被您在清单中定义的类型的广播接收器接收。

万一我问的不清楚,我想做的是使用 LocalBroadcastManager 因为来自我的服务的广播不一定需要在系统范围内看到,如果可能的话,我宁愿将它们保密,但如果用户关闭我的应用程序并且服务仍在运行,我也想显示通知。有没有一种方法可以结合这两种功能而无需在服务内部发送两次广播?

(我不想做的)喜欢: LocalBroadcastManager.getInstance(UnzipService.this).sendBroadcast(broadcast); sendOrderedBroadcast(broadcast);

0 投票
1 回答
2525 浏览

android - 使用 keytool 和 jarsigner 签署我的应用程序

我正在使用我的 commonsware 书和描述如何签署我的应用程序的 android 文档。但是有一点我不明白...

我已经毫无问题地生成了我的 KeyStore 文件。

现在,通用软件书说“构建一个发布版本,它应该在项目的 bin/目录中为您提供一个 unsigned.apk 文件”,但它没有说明如何做到这一点。我看不到如何在 Eclipse 中执行此操作。似乎没有 Build -> Release 菜单项。尝试谷歌搜索,找不到任何东西。

Android 文档说“2. 在发布模式下编译应用程序”,然后告诉您“导出未签名的应用程序包”,然后将其存储在某个地方。我这样做了,现在我有两个 apk 文件。一个在我的 bin 目录中,一个在我导出的目录中。现在它说要使用 jarsigner 和 zipaligner,我只能假设(它没有说)我正在对已存储的导出 apk 执行此操作(而不是我的 bin 目录中的那个)。然后我只是将这个存储的apk复制回我的bin目录中的那个吗?下次编译的时候不会被抹掉吗?

与编写应用程序相比,这要困难得多,也少了很多乐趣。

有人可以让我直截了当吗?谢谢,加里

0 投票
1 回答
1479 浏览

android - 如何从选项菜单中获取选项到标题栏 ActionBar Sherlock android

我试图让我的选项出现在标题栏中。我正在使用 ActionBarSherlock,我可以弄清楚如何删除标题栏中的标题,但想用我的选项菜单中的 2 个选项替换文本。

我正在使用此代码EmpubLite作为我的应用程序的示例,但我无法弄清楚 Mark(commonsware 人)如何从标题栏中的选项菜单中获取图标。我的选项显示在操作栏的底部,这占用了屏幕上不必要的空间。我一直在查看示例here,但似乎无法确切了解如何在标题栏中获取选项。我希望马克(或某人)能解释一下。

0 投票
1 回答
106 浏览

commonsware - 教程 #9 中的 getWebView() 错误

我按照教程 #9 的说明创建了 AbstractContentFragment 对象。从书中复制代码后,我收到错误“方法 getWebView() 未定义为 AbstractContentFragment 类型”

我检查了代码——这正是书中的内容。我在项目中包含了 actionbarsherlock 库 - 教程 #8 没有问题。我可以在 webviewfragment 类中看到 getWebview() 方法。

指针?

0 投票
1 回答
1006 浏览

android - NullPointerException onLocationChanged GPS

我已经尝试使用 commonsware 示例

这是活动

我在这个活动中添加了 gps,但是当我尝试应用程序时强制关闭

这是清单

我添加一个权限

这是 logcat 空指针异常

空值在行latTxt.setText(String.valueOf(loc.getLatitude()));

如何解决?

0 投票
2 回答
15689 浏览

android - 未经许可不允许启动服务意图 - 发件人没有获得权限

我正在使用 Mark Murphy 的优秀 Commonsware 书籍——但要消化的东西很多。我构建了“FakePlayer”应用程序(伪装成 mp3 播放器)。它包含一项服务。作为学习经验,我尝试编写一个简单的应用程序(只有一个按钮),其点击处理程序可以:

它工作正常 - 服务启动正常。我注意到 Eclipse 抱怨该服务没有权限,所以我通过添加 2 行 android:permissions 和 android:exported 来更新服务的清单:

我在 Eclipse 下使用“调试”将播放器应用程序重新加载到设备上(我使用的是 Galaxy S2)。它似乎奏效了;入门应用程序导致了我预期的权限异常。

然后我添加到启动应用程序的清单(授予它权限):

我将启动应用程序重新加载到设备上(使用 Eclipse 下的调试)。仍然在启动应用程序中获得权限错误。

我从设备中删除了这两个应用程序并重新安装(使用调试...),首先是服务应用程序,然后是启动程序。仍然得到烫发错误。

我正在研究 Murphy 先生的高级 Android 书中的“如何使用远程服务”部分,所以我意识到这可能不是跨应用程序工作的最佳方式。

我做了一个“adb shell dumpsys package”,找到了启动应用程序,发现它有“permissionsFixed=false”,没有“grantedPermissions”部分。我认为这意味着启动应用程序中的清单更改没有设法将烫发添加到应用程序中。但我不知道为什么。作为一种学习体验,到目前为止它只产生了困惑......

任何线索都非常感谢!谢谢!

0 投票
1 回答
1010 浏览

android - 使用什么模拟器来测试 sw720dp-land 布局

我正在运行一些示例代码来测试片段:

https://github.com/commonsguy/cw-omnibus/tree/master/LargeScreen/EU4You

我正在尝试使用 android 模拟器测试结果,但我选择的模拟器似乎都不起作用(它们不使用 sw720dp-land 布局)。我确实按 Ctrl F11/F12 将屏幕旋转为横向。

有人可以告诉我在 Android 虚拟设备管理器中创建新 AVD 时要使用哪些设置。具体来说,什么“设备”和“目标”。