小编Joa*_*kim的帖子

什么时候不确定的进度条会进入Android支持库

我的应用程序UI是使用Android支持库构建的,但目前没有AppCompat版本的(intederminate)进度条,我的应用程序确实需要它.

我宁愿不使用任何第三方库来实现材料设计进度条,所以我想知道是否有人知道为什么它不包含在支持库中,以及是否有任何迹象表明它到达(以及何时).

android android-appcompat android-progressbar android-support-library material-design

47
推荐指数
2
解决办法
3万
查看次数

默认情况下禁用AlertDialog的(正)按钮

你如何禁用一个Android的肯定按钮AlertDialog默认

在用户对视图进行更改之前,希望禁用正按钮(在本例中为"保存")似乎是很正常的(在本例中为EditText.

我知道我可以通过调用来获取按钮,dialog.getButton(DialogInterface.BUTTON_POSITIVE)但如果show()尚未调用此调用将返回null .

android android-edittext android-alertdialog

10
推荐指数
2
解决办法
7464
查看次数

Android Framework小部件与其AppCompat版本之间的区别

我最近注意到Android中有大多数View类型的AppCompat版本,例如ListView/ ListViewCompat,Button/ AppCompatButton等.

对于这些更简单的视图(不包括例如SwitchCompat),它们与Android Framework版本有什么区别?我还没有找到关于此事的任何文件......

我很想知道选择任何一个版本的后果,以及选择其中一个版本是否有任何优势.

特别:

  • ListView和之间的区别ListViewCompat
  • Button/ 之间的差异AppCompatButton
  • ImageView/ 之间的差异AppCompatImageView
  • EditText/ 之间的差异AppCompatEditText
  • TextView/ 之间的差异AppCompatTextView

我从正常版本改为AppCompat版本,期望颜色将从主题中使用,并且在Lollipop和pre-lollipop上看起来相同,但它对某些视图(例如ListView)产生相反的效果

android android-appcompat

8
推荐指数
2
解决办法
4586
查看次数

尽管即时运行已关闭,Android Studio会安装旧代码/不重启应用程序

我正在使用新的Android Studio 2.0(Beta 6),我面临着一个严重的问题.更新后,我注意到Instant Run功能存在一些问题,确保应用程序实际运行新代码非常困难.我立即禁用了"即时运行"功能.

尽管如此,我注意到Android Studio并不总是部署新代码!

我在创建Activity时添加了一个print并且没有调用它来测试我的理论.如果我关闭应用程序(例如通过按后退按钮)然后运行代码 - 它按预期工作.

我还验证了它实际上是一个问题,因为在按下运行按钮后运行旧代码.

F正在发生什么,有没有人知道修复?(重新安装AS 1.5除外)

备注和摘要:

  • "运行"按钮上没有闪电
  • 按下运行后不调用onCreate Print
  • 按下运行后更改的代码不会更新
  • 在"首选项"中关闭"即时运行"(并且在代码更改时重新启动活动已启用)
  • 它不会每次都发生- 大约50%的运行

android-studio android-instant-run

7
推荐指数
0
解决办法
345
查看次数

在通话中启动应用程序时,UITAbBar在屏幕下方向下推

当用户打电话时启动我的应用程序时,整个应用程序会在绿色的“电话”栏下方被下推。我的应用程序的根是a UITabViewController,并且选项卡现在部分出现在屏幕下方。最糟糕的是,结束通话后,视图现在占据了整个屏幕空间,但是选项卡栏仍部分位于屏幕下方!更奇怪的是,当启动应用程序并且用户接听电话或离开该应用程序时,在通话处于活动状态时拨打电话并返回到该应用程序时,它会按预期调整大小。(因此,只有在通话进行中从头启动应用程序时才会发生这种情况)

我只能看到的与此相关的帖子是通话状态栏如何影响UIViewController的视图大小?

答案之一是建议更改“自动调整大小”蒙版:

public override func viewDidLoad() {
    super.viewDidLoad()
    self.view.autoresizingMask = .flexibleHeight
}
Run Code Online (Sandbox Code Playgroud)

在我的UITabBarController,但它什么都没有改变。

另一个答案建议设定wantsFullScreenLayoutfalse,这是默认规则UIViewControllers,但不适合UITabBarControllers。但是,此属性在iOS 7中已弃用,建议使用edgesForExtendedLayoutextendedLayoutIncludesOpaqueBars代替。

我在那里找不到足够的信息来了解我应该如何解决此问题。有没有人有一个想法?

注意:对于某些图像,这将是非常说明性的,但是由于这些图像尚未发布,因此我无法发布

ios uistatusbar autoresizingmask

7
推荐指数
1
解决办法
263
查看次数

WearableListenerService仅在安装应用程序后启动 - 然后再也不会

我正在使用Android Wear支持开发Android应用程序.

主应用程序将数据发送到Android佩戴应用程序WearableListenerService,然后发出通知并显示它.

我的问题是,如果我重新启动Watch,Android Wear应用程序永远不会再次启动 - 因为磨损设备上的侦听器服务并不是从移动应用程序开始的!

我已经尝试强制关闭应用程序并重新启动它,重新启动手机 - 无论我做什么,听众服务都无法再次启动.

当我从Android Studio安装应用程序时,它可以正常工作,它将一直有效,直到重新启动手表.(我可以重新启动手机并关闭应用程序)

有没有人有类似的问题或知道解决方案?

所以我提供了更多信息:

当手表启动时,我在日志中捕获了此消息(这显然是问题的根源):

11-27 17:22:08.974      803-830/com.google.android.clockwork.packageinstaller I/WearablePkgInstaller? Sent delete request for com.example.distributedmediaplayer
11-27 17:22:09.074      473-509/system_process I/ActivityManager? Force stopping com.example.distributedmediaplayer appid=10032 user=-1: uninstall pkg
11-27 17:22:09.084      473-517/system_process W/PackageManager? Couldn't delete native library directory /data/app-lib/com.example.distributedmediaplayer
11-27 17:22:09.274      473-517/system_process I/ActivityManager? Force stopping com.example.distributedmediaplayer appid=10032 user=0: pkg removed
11-27 17:22:09.574      803-814/com.google.android.clockwork.packageinstaller I/WearablePkgInstaller? Package com.example.distributedmediaplayer was uninstalled.
11-27 17:22:44.721    1166-1182/android.process.acore D/VoicemailCleanupService? Cleaning up data for package: com.example.distributedmediaplayer
11-27 17:22:44.891      637-637/com.google.android.gms I/ConfigFetchService? PackageReceiver: Intent …
Run Code Online (Sandbox Code Playgroud)

android wear-os

5
推荐指数
1
解决办法
1705
查看次数

MPAndroidChart Linechart 未连接数据点

我正在调查MPAndroidChart我公司的 Android 和 iOS 应用程序的使用情况,我发现了一个问题,我需要一个解决方案才能使用这个框架。

该应用程序将主要使用折线图功能,并且提供的数据可以包含NULL条目。我看过其他讨论这个问题的帖子,显然还没有显示NULL值的解决方案。具有空值的 MPAndroidChart

作者建议不要将数据点添加到集合中,但在我的情况下,如果有两个以上的连续NULL值(或代表它),则图中有一个“洞”非常重要,即该图是在两个点之间不连续,NULL值介于两者之间。有什么办法可以用这个框架来完成这个吗?

我一直在研究将数据点分成不同数据集的可能性,但这似乎是一种黑客攻击。

谢谢!

数据集示例:

[1 2 10 NULL NULL NULL 20 25 30]
The Line must NOT connect the numbers 10 and 20.
Run Code Online (Sandbox Code Playgroud)

android mpandroidchart

5
推荐指数
1
解决办法
2418
查看次数

显示DialogFragment时,调用片段不会暂停

在我的应用程序的一部分中,我向用户显示ListView.当用户按下列表中的项目时,DialogFragment显示a.

@Override
public void onClick() {
    android.support.v4.app.FragmentTransaction ft = getFragment().getFragmentManager().beginTransaction();
    ft.addToBackStack(null);
    SingleSettingDialogFragment dialog = SingleSettingDialogFragment.newInstance(...);
    dialog.show(ft, "Single");
}
Run Code Online (Sandbox Code Playgroud)

DialogFragment具有以下结构:

@Override
public Dialog onCreateDialog(final Bundle savedInstanceState) {
    super.onCreateDialog(savedInstanceSate);
    AlertDialog dialog =  new AlertDialog.Builder(...)
        ...
        .create();
    ...
    return dialog;
}
Run Code Online (Sandbox Code Playgroud)

当用户退出DialogFragment时,我希望onResume()调用调用片段的方法,但事实并非如此.

那么DialogFragments有什么特别之处呢?为什么在显示对话框时暂停调用Fragment?它怎么能实现?

我没有在文档中找到任何对此行为的引用,因此引用是一个加号.

android android-fragments onpause android-dialogfragment

5
推荐指数
1
解决办法
3237
查看次数

APNS 设备令牌与登录/注销系统相结合

我有一个 iOS 应用程序,用户可以在其中使用不同的帐户登录和注销。(这些帐户特定于我们的服务)。

当发生一些有趣的事情时,我还使用 APNs 将通知从我的后端服务器推送到应用程序。

以下场景描述了我的问题:

  • 用户 A 启动应用程序并登录。生成设备令牌并发送给服务器。
  • 用户 A 退出应用
  • 用户 B 登录应用
  • 后端服务器向“属于”用户 A 的设备发送通知。但是,用户 B 现在已登录到该设备。(它们共享相同的设备令牌)
  • 用户 B “收到”通知。(即电话显示通知,尽管它不适用于当前帐户)。

有没有人解决过类似的问题?我可以想到几种解决方案,例如:

  • 手动刷新设备令牌。(不知道有没有可能)
  • 接收通知 - 但仅在意向用户登录时显示。但是,我认为这是不可能的,因为系统负责显示通知而不是我的应用程序。
  • 更改后端,以便用户必须在其在线和离线时告诉它,并且在离线时不发送通知。(这个解决方案会导致很多问题,我认为它也不会完全起作用,所以我想避免这种情况)。

这些解决方案似乎都不是最佳的,我也没有找到更好的解决方案。我认为,例如 Facebook 一定已经解决了类似的问题,可能还有很多其他问题。

感谢您对此提供一些意见。

供参考。我将在 Android 上面临完全相同的问题,但我选择在 Stack Overflow 上将问题分开。

apple-push-notifications ios

5
推荐指数
1
解决办法
1355
查看次数

使用HCITool宣传Bluetooth LE服务

我正在尝试在Linux计算机上创建低功耗蓝牙外围设备(目标是通过蓝牙从iPhone发送数据)。即时通讯目前使用的工具hciconfighcitoolhcidump

我当前的实验是播发带有特定UUID的服务,iOS CoreBluetooth库将使用该服务。(注意:我不是要创建iBeacon)。

现在,实际上就像困扰我的一个命令一样简单。

hcitool -i hci0 cmd 0x08 0x0008 15 02 01 1a 11 07 41 42 43 44 45 46 47 48 49 4a 4b 4c 4d 4e 4f 50
Run Code Online (Sandbox Code Playgroud)

我认为应该执行以下操作:

  • 0x08:将组设置为BLE
  • 0x0008:将命令设置为HCI_LE_Set_Advertising_Data

  • 0x15:将报头中的有效字节长度设置为21。(标志数据包为3字节,服务结构为18字节)
  • 0x02:将标志结构的长度设置为2个字节
  • 0x01:将结构类型设置为AD标志
  • 0x1a:标志值:

    bit 0 (OFF) LE Limited Discoverable Mode
    bit 1 (ON) LE General Discoverable Mode
    bit 2 (OFF) BR/EDR Not Supported
    bit 3 (ON) Simultaneous LE and BR/EDR to Same Device Capable (controller)
    bit 4 (ON) …
    Run Code Online (Sandbox Code Playgroud)

bluetooth-lowenergy gatt bluetooth-peripheral

5
推荐指数
1
解决办法
5228
查看次数

对于执行需要用户在Android 6.0 Marshmallow中禁止的权限的代码的未更新应用,会发生什么情况

我想知道新的Android 6.0 Marshmallow功能,它允许用户明确设置允许应用程序使用哪些权限.我的问题是这会如何影响使用权限集的现有应用程序.

例如,未更新的应用程序[Target-sdk-version <23]已显示使用相机的权限,但用户手动禁止它.当应用程序执行使用该权限的代码时会发生什么?它会崩溃吗?

我假设新应用程序在执行依赖于权限的代码之前必须检查它们是否具有权限 - 我的问题是关于更改以处理这些情况的应用程序.

android android-permissions android-6.0-marshmallow

4
推荐指数
1
解决办法
180
查看次数

如何从 Java 中的字符串解析任何数字类型?

如何从 Java 中的字符串解析任何数字类型?

我知道类似的方法Integer.parseInt(myString)Double.parseDouble(myString)但我最想要的是一种Number.parseNumber(myString)不存在的方法。我怎样才能以另一种方式实现这种行为?(我希望解析后的数字能够“完全”反映字符串,例如小数位数)。

例子:

"0" => Number (Integer 子类的内部)

"0.0" => Number (Double 子类的内部)

此外,没有像检查小数点分隔符等丑陋。

java string-parsing

3
推荐指数
1
解决办法
4413
查看次数

在测试期间使用Mockito模拟我的课程中的一种方法

我正在尝试使用JUnit和Mockito为Android 编写单元测试(检测).

一些上下文:我正在测试一个严重依赖于视图的类,我不能/不想在测试期间实际膨胀视图.有一次,我的类到测试想要使用视图的宽度,我已经定义了一个(公共)方法,该类用于获取运行时的宽度(getWidth()).

在我的测试中,我想使用Mockito来模拟getWidth()方法 - 仅.(虽然让其他人的行为方式相同).只是为了澄清:我的类调用中的一种方法,我getWidth()希望它在测试期间返回一个模拟值.

所以我尝试使用该Mockito.spy()方法实例化Class ,但我不知道这是否是正确的方法(它不起作用)或者我还应该做些什么.

我目前的代码:

mGraph = Mockito.spy(new Graph(xAxis, leftAxis, null, false, new Graph.Style(), curve));
Mockito.when(graph.getGraphWidth()).thenReturn(400);
Run Code Online (Sandbox Code Playgroud)

我收到以下错误消息,但我不知道它是否相关或只是另一个错误:

java.lang.IllegalArgumentException: dexcache == null (and no default could be found; consider setting the 'dexmaker.dexcache' system property)

junit android unit-testing mockito

2
推荐指数
1
解决办法
1501
查看次数