我正在尝试使用方法onSaveInstanceState()和onRestoreInstanceState()来保存和恢复Activity的状态。 问题是它永远不会进入onRestoreInstanceState()方法。 任何人都可以向我解释为什么这是?
背景 在Android 4.4 (KitKat)上,Google已经对SD卡进行了相当的限制。 从Android Lollipop(5.0)开始,开发人员可以使用一个新的API,要求用户确认是否允许访问特定的文件夹,就像写在这个Google-Groups文章中一样 。 问题 这篇文章指导你访问两个网站: https://android.googlesource.com/platform/development/+/android-5.0.0_r2/samples/Vault/src/com/example/android/vault/VaultProvider.java#258 这看起来像是一个内部的例子(可能稍后会在API演示中显示),但是很难理解正在发生的事情。 http://developer.android.com/reference/android/support/v4/provider/DocumentFile.html 这是新的API的官方文档,但它没有告诉足够的细节如何使用它。 以下是它告诉你的: 如果您确实需要完全访问文档的整个子树,请启动ACTION_OPEN_DOCUMENT_TREE以让用户select一个目录。 然后将得到的getData()传入fromTreeUri(Context,Uri)开始使用用户select的树。 在浏览DocumentFile实例的树时,可以始终使用getUri()来获取表示该对象的基础文档的Uri,以用于openInputStream(Uri)等。 为了简化运行KITKAT或更早版本的设备上的代码,可以使用fromFile(File)来模拟DocumentsProvider的行为。 问题 我有一些关于新API的问题: 你怎么用它? 根据这篇文章,操作系统会记住应用程序被授予访问文件/文件夹的权限。 你如何检查你是否可以访问文件/文件夹? 有没有一个函数返回我可以访问的文件/文件夹的列表? 你如何处理Kitkat上的这个问题? 它是支持库的一部分吗? 操作系统上是否有设置屏幕,显示哪些应用程序可以访问哪些文件/文件夹? 如果在同一台设备上为多个用户安装应用程序会发生什么情况? 有没有关于这个新API的其他文档/教程? 权限可以被撤销吗? 如果是这样,是否有意向被发送到应用程序? 会要求权限工作recursion在选定的文件夹? 使用权限还允许给用户一个由用户select多重select的机会吗? 还是应用程序需要明确告诉意图哪些文件/文件夹允许? 有没有在模拟器上尝试新API的方法? 我的意思是,它有SD卡分区,但它作为主要的外部存储,所以所有的访问权限已经给(使用一个简单的权限)。 当用户用另一个replaceSD卡时会发生什么?
你如何得到一个TextView的文本是alignment的(文本在左侧和右侧齐平)? 我在这里find了一个可能的解决scheme,但是它不起作用(即使你把vertical-center改成center_vertical等等)。
编辑问题: 移动解决scheme 我想devise不同的屏幕dpi像下面的决议。 分辨率320×480, 480×800, 540×960, 720×1280(三星S3), 1080×1920(S4,Nexus5,Nexus 5x,Moto G4), 2560 x 1440(Nexus 6,Nexus 6p,三星边缘) 平板电脑决议 480×800(micromax), 600×1024(samsung tab2), 800×1280(nexus 7), 1200×1920(新联网7), 2048×1536(nexus 9) 我想根据设备显示分辨率使用不同的字体大小 。 Q1)解决这个problem的best方法是什么? Q2)做抛出编码或XML的最佳select是什么? Q3)哪个可绘制文件夹代表哪个设备分辨率? Q4)应用程序启动器图标大小为不同的分辨率?
我有一个应用程序显示自定义通知。 问题是,在Android 5中运行时,通知栏中的小图标显示为白色。 我该如何解决这个问题?
现在哪个XMPP库是Android开发的最佳select? 我一直在使用修补的Smack库,正如在这里的许多其他问题中所build议的。 但是,这是两年前Smack API的补丁版本。 虽然它通常运作良好,我正在探索任何其他更新的选项。 我一直在研究官方的Smack API ,经过一些研究,似乎现在可能工作得很好(尽pipe我还没有在实际应用中尝试过)。 还有另外一个解决scheme, Beem的aSMACK库 。 Beem是一个相当新的XMPP客户端的android和我所了解的,他们正在使用他们自己的补丁版本的aSMACK。 最后,有一个SMACK,但也没有更新一段时间(如网站所示)。 你有什么其他的build议,或者你能解释为什么我应该select其中的一个吗?
我正试图从支持库实现SearchView 。 我希望用户能够使用SearchView来筛选RecyclerView的电影List 。 到目前为止,我已经遵循了几个教程,并且已经将SearchView添加到ActionBar ,但是我不确定从哪里开始。 我已经看到了一些例子,但是当你开始input时,没有一个显示结果。 这是我的MainActivity : public class MainActivity extends ActionBarActivity { RecyclerView mRecyclerView; RecyclerView.LayoutManager mLayoutManager; RecyclerView.Adapter mAdapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_recycler_view); mRecyclerView = (RecyclerView) findViewById(R.id.recycler_view); mRecyclerView.setHasFixedSize(true); mLayoutManager = new LinearLayoutManager(this); mRecyclerView.setLayoutManager(mLayoutManager); mAdapter = new CardAdapter() { @Override public Filter getFilter() { return null; } }; mRecyclerView.setAdapter(mAdapter); } […]
比方说,我有一个垂直线性布局: [v1] [v2] 默认v1有visibily = GONE。 我想用展开的animation展示v1,同时按下v2。 我尝试了这样的事情: Animation a = new Animation() { int initialHeight; @Override protected void applyTransformation(float interpolatedTime, Transformation t) { final int newHeight = (int)(initialHeight * interpolatedTime); v.getLayoutParams().height = newHeight; v.requestLayout(); } @Override public void initialize(int width, int height, int parentWidth, int parentHeight) { super.initialize(width, height, parentWidth, parentHeight); initialHeight = height; […]
有人可以告诉我一个可以用一个Service无法完成的IntentService (反之亦然)可以完成的事情的例子吗? 我也相信一个IntentService运行在另一个线程中,一个Service不运行。 所以,据我所知,在自己的线程中启动一个服务就像启动一个IntentService 。 不是吗? 如果有人能帮我解决我的两个问题,我将不胜感激。
我有一个自定义列表适配器: class ResultsListAdapter extends ArrayAdapter<RecordItem> { 在重写的“getView”方法,我做了一个打印来检查是什么位置是否是一个convertView或不是: @Override public View getView(int position, View convertView, ViewGroup parent) { System.out.println("getView " + position + " " + convertView); 这个输出(当列表第一次显示时,没有用户input) 04-11 16:24:05.860: INFO/System.out(681): getView 0 null 04-11 16:24:29.020: INFO/System.out(681): getView 1 android.widget.RelativeLayout@43d415d8 04-11 16:25:48.070: INFO/System.out(681): getView 2 android.widget.RelativeLayout@43d415d8 04-11 16:25:49.110: INFO/System.out(681): getView 3 android.widget.RelativeLayout@43d415d8 04-11 16:25:49.710: INFO/System.out(681): getView […]