Articles of android

滚动后,CoordinatorLayout在底部留下空白空间

我正在尝试使用CoordinatorLayout实现Google的最新设计技巧,并且在滚动和视差效果方面存在问题。 显示活动后,一切看起来都不错,但是当我尝试滚动时会出现问题。 看起来底部视图没有正确扩展,并且在向上滚动后,下面会出现空白区域。 底部视图似乎只是顶部视图和导航栏之间初始显示的大小。 它看起来像这样: 相关代码: 这种奇怪的行为是随机发生的。 有时底部视图可以正常滚动,并且不会出现空白空间。 我究竟做错了什么? 谢谢。

onSaveInstanceState没有保存我的值(onCreate输入Bundle总是为null)

保存包(活动A): @Override protected void onSaveInstanceState(Bundle outState) { outState.putString(“test”, “value”); super.onSaveInstanceState(outState); } 导航到活动B; startActivity(new Intent(getBaseContext(), B.class)); 回到活动A: startActivity(new Intent(getBaseContext(), A.class)); 试图在活动A中加载我写入bundle的值: @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Log.d(“MY”, “saved instance is null”+ Boolean.toString(savedInstanceState == null)); } 返回总是savedInstanceState = null。 我在这里缺少什么? 当我返回主活动时,永远不会触发onRestoreInstanceState

添加依赖项到Android Cordova插件

我正在构建一个Cordova Android插件 。 我想在插件 (特别是剪刀 ) 创建的Intent中使用第三方View 。 通常(在非Cordova项目中)我会转到我的项目的build.gradle文件并添加如下: dependencies { compile ‘com.lyft:scissors:1.0.1’ } 但似乎我的插件项目中的build.gradle文件似乎没有被触及? 向插件项目添加依赖项的正确方法是什么,通过Cordova支持构建并通过Android Studio构建? 同样的问题,但对于本地项目(不在GitHub上托管)。

为什么EditText在Ice Cream Sandwich中保留其Activity的Context

在Ice Cream Sandwich中,当有一个包含EditText的Activity时,即使用户离开Activity,EditText也会保留Activity的Context。 为了certificate这一点,我创建了TestLeakActivity,它分配了一个大字节数组。 由于Activity的Context不会被垃圾收集,因此字节数组会在堆上累积,最终导致OutOfMemoryError。 您可以使用DDMS堆工具观察堆增长,并且可以通过查看Eclipse MAT中的HPROF文件来跟踪对EditText类的未完成引用。 要创建内存泄漏,请进入LaunchActivity,然后继续启动并退出TestLeakActivity。 LaunchActivity.java package com.example.testleakproject; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.widget.Button; import android.widget.TextView; 公共类LaunchActivity扩展Activity { @覆盖 public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); 按钮按钮=新按钮(此); button.setText(“Start TestLeakActivity”); button.setOnClickListener(new OnClickListener(){ @覆盖 public void onClick(查看v){ Intent intent = new Intent(LaunchActivity.this,TestLeakActivity.class); startActivity(意向); } }); ViewGroup container =((ViewGroup)findViewById(android.R.id.content)); […]

活动已泄露窗口/对话框(再次!)

是的,我已经阅读了关于同样问题的无数问题。 我的代码很简单:我只是在onCreate上使用showDialog(int id) ,然后我旋转设备。 代码就是那个(测试用例) ,这足以导致问题。 我的理解是showDialog的方法会处理这个……对话框会消失,然后在更改后稍后调用onCreate并再次显示对话框。 但不是。 这个推理有什么问题? 我(我想)了解原因 ,但我不知道如何解决这个问题。 即使是iosched应​​用程序也会在EULA窗口的实现方面遇到同样的问题(在eula对话框中更改方向并导致泄漏)。 我已经阅读了关于关闭onPause的对话框的内容,但是1)当它没有显示时,我冒险解雇,2)跟踪对话似乎太多了。 必须有一个更强大的方法。 那么……处理这个问题需要哪些更干净的代码呢? 谢谢。 日志错误输出: 01-30 00:27:18.615: E/WindowManager(20316): Activity com.test.PreSetupActivity has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView@418e0c28 that was originally added here 01-30 00:27:18.615: E/WindowManager(20316): android.view.WindowLeaked: Activity com.test.PreSetupActivity has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView@418e0c28 that was originally added here 01-30 00:27:18.615: E/WindowManager(20316): at android.view.ViewRootImpl.(ViewRootImpl.java:343) 01-30 00:27:18.615: E/WindowManager(20316): at […]

使用Android与USB HID设备通信

我是USB和Android的新手,如果我不清楚地解释自己,请原谅我。 我有一个USB HID设备,我可以在Windows中与之通信。 我正在尝试使用运行Android 3.1的Acer Iconia A500平板电脑建立通信。 我能够find设备,枚举它,获得它唯一可用的接口,获得唯一可用的端点(0),并确定它是什么types的端点(从设备到主机传输中断)。 我对USB规范的理解是,所有HID设备都需要具有控制端点(端点0)和中断IN端点。 但似乎这里的端点0是中断输入端点,而不是控制端点。 然而,为了使设备枚举,它必须成功地在控制端点上传输其描述符数据。 因此,我推断出控制端点必须被find(并使用),因为主机实际上枚举了设备。 这是我能够继续进行的,如上所述,在应用程序级别呈现给我的唯一接口/端点是从设备到主机的中断types。 我的应用程序没有可用的端点从主机到设备,中断或控制。 因此,设备等待被告知该做什么,并且主机等待设备中发生的事情。 不是很刺激。 请记住,此设备在连接到Windows时会正确响应,例如,我能够发送包含13个字节数据的报告,这些数据会导致设备点亮LED。 所以它似乎符合USB HID规范。 作为一种绝望的行为,我尝试将这一个端点用作控制端点和中断OUT端点,使用controltransfer()和UsbRequest()将数据提交给设备,在任何一种情况下都没有响应。 所以我的问题是:“控制传输端点是(?)用于设置设备,为什么我无法find并使用它?” 感谢您的任何见解,以下是相关代码,如果需要,我可以将其余内容全部包括在内: private UsbManager mUsbManager; private UsbDevice mDevice; private UsbDeviceConnection mConnectionRead; private UsbDeviceConnection mConnectionWrite; private UsbEndpoint mEndpointRead; private UsbEndpoint mEndpointWrite; // check for existing devices for (UsbDevice device : mUsbManager.getDeviceList().values()) { //Need to filter for […]

适用于Android的代码分析工具

有没有适用于Android的静态代码分析工具,可以通过尝试访问可能为null的对象来获取NullPointerExceptions等简单的东西(不先检查它)… 像C#项目上的resharper这样的工具做得很好,所以我假设Android的Java有类似的工具……

存储密码

我正在创建一个用于存储加密数据的应用程序。 在这个问题中,OP si建议明确存储用户的凭证。 但是,如果我想存储使用SecretKeySpec(用于加密数据的密码)创建的加密密码,该怎么办? 根据我的理解,密钥本身是加密的。 所以我可以存储和检索它。 注意:我不是在询问如何存储首选项,只要我了解SecretKeySpec如何工作以及如何排序,序列化和检索加密密码。 编辑 :对不起,我忘了指定它需要与API级别4兼容。

当Google Play开发者控制台收到崩溃或ANR时,是否可以收到通知(例如电子邮件)?

我使用BugSnag (类似于BugSense , Bugify等)来跟踪和管理我的Android应用程序错误,但是,我遇到了BugSnag初始化之前应用程序崩溃的情况,因此find此崩溃报告的唯一地方是Google播放Developer Console崩溃报告。 这很好,花花公子,但我必须手动检查开发人员控制台,发现有些错误没有被BugSnag捕获(顺便说一句,它们并没有让它变得明显)。 发生错误时,有没有办法从Google Play Developer Console设置电子邮件通知?

如何找出目前关注的视图?

我的应用程序使用键盘控制,当我四处走动时,我注意到偶尔你会得到我称之为“神秘视图”的东西 – 我之所以说是因为似乎没有看到任何可见的东西,但是没有看到任何可见的焦点 有什么方法可以找出我在任何特定时间关注的内容吗? 例如。 触发视图选择等的监听器 谢谢 **编辑 – ntc的一些代码** LinearLayout col1 = (LinearLayout)findViewById(R.id.col1); Button btn = new Button(this); btn.setOnClickListener(new OnClickListener() { public void onClick(View v) { LinearLayout col1 = (LinearLayout)findViewById(R.id.col1); if(col1.getFocusedChild() != null) { Log.d(TAG, col1.getFocusedChild().toString()); } } }); col1.addChild(btn);