小编khu*_*rav的帖子

NavigationView获取/查找标题布局

在我的NavigationView中,我有一个标题布局,其id为'viewId',带有活动按钮.要设置这些按钮,我在活动中执行以下操作onPostCreate:

final View panel = findViewById(R.id.viewId);
panel.setOnClickListener(new View.OnClickListener() {
... setup goes here ...
});
Run Code Online (Sandbox Code Playgroud)

使用新版本的android支持库(23.1.0),无法找到视图,它返回null.以前的版本运行良好.这是一个错误还是我使用此功能错了?如果是这样,如何访问标题布局并向其添加行为?

android android-support-library android-design-library navigationview

161
推荐指数
5
解决办法
9万
查看次数

RecyclerView存储/恢复活动之间的状态

我正在将ListViews迁移到RecyclerViews.使用listviews,我使用此处描述的常用技术来存储和恢复活动之间的滚动位置.

如何使用RecyclerViews做同样的事情?在RecyclerView.onSaveInstanceState()似乎有protected访问权限,因此无法直接使用.

android listview android-recyclerview

64
推荐指数
4
解决办法
6万
查看次数

Google云端硬盘GET_CONTENT意图读取文件

我有一个Android上的应用程序,使用像Dropbox这样的云存储进行一些文件共享.开始分享我扔android.intent.action.SEND.在显示的列表中,我看到了Google云端硬盘应用(之前已安装),因此我尝试将文件发送给它 - 它运行正常,该文件显示在云端硬盘列表中.

然后,在另一台设备上我想读取这个文件.我抛出 android.intent.action.GET_CONTENT意图,选择驱动器,然后不知道如何获取文件.我收到这样的Uri:

content://com.google.android.apps.docs.files/exposed_content/6jn9cnzdJbDywpza%2BlW3aA%3D%3D%0A%3BRV%2FaV94o%2FCcW4HGBYArtwOdHqt%2BrsYO4WmHcs6QWSVwp%2FXogkRAgit7prTnfp00a%0A
Run Code Online (Sandbox Code Playgroud)

我不知道如何转换为物理文件路径.我怎么能从这里得到文件内容?

我在内容提供商周围玩,可以获取文件名,但不是完整路径或其他任何内容.

对于Dropbox,我得到file://风格uri,笔直,简单,效果很好.

android file-get-contents google-drive-api

17
推荐指数
1
解决办法
1万
查看次数

显示后通知消失

我们的应用程序中的代码类似于以下内容

    val pendingIntent = PendingIntent.getActivity(ctx, id.toInt(), intent, PendingIntent.FLAG_CANCEL_CURRENT)
    val builder = NotificationCompat.Builder(ctx, Channel.TEST_CHANNEL.channelId)
    builder.setTicker(tickerText)
            .setContentTitle(contentTitle)
            .setContentText(contentText)
            .setVibrate(vibrate)
            .setSmallIcon(icon)
            .setAutoCancel(true)
            .setLights(-0xff0100, 300, 1000)
            .setSound(uri)
            .setContentIntent(pendingIntent)
            .setStyle(NotificationCompat.BigTextStyle().bigText(contentText))
            .addAction(R.drawable.ic_notification, ctx.getString(R.string.notification), piAction)

    val notification = builder.build()
    val nf = ctx.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
    nf.notify(NOTIFICATION_TAG, id.toInt(), notification)
}
Run Code Online (Sandbox Code Playgroud)

从最近开始,我们注意到某些运行Android 8+的设备上的通知在显示后开始消失,没有用户的交互.设置auto-cancel为有false帮助,但用户体验降低.

id是数据库中的唯一项ID.这可能是需要注意的重要事项 - 从技术上讲,我们可以id通过用户显示,删除/取消通知,以及稍后再次使用具有相同ID的类似通知的时间.这可能是原因吗?

notifications android

12
推荐指数
1
解决办法
1331
查看次数

EditText lineSpacingExtra奇怪的行为

我有一个EditText,lineSpacingExtra设置为8dp.当我用这个EditText和预设文本打开一个页面时,行间距很好.但是当我在同一页面上点击EditText的末尾并开始输入时,行间距似乎被忽略了.

这是一个错误还是我错过了什么?

在此输入图像描述

添加了代码段.我想,没什么特别的.

<EditText
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@android:color/transparent"
        android:padding="8dip"
        android:scrollbars="vertical"
        android:fadingEdge="vertical"
        android:gravity="top"
        android:lineSpacingExtra="8dip"
        android:lineSpacingMultiplier="2"
        android:textSize="18sp"
        android:capitalize="sentences"
        android:inputType="textCapSentences|textMultiLine"
        />
Run Code Online (Sandbox Code Playgroud)

更新:看起来Android 5 Lollipop 附带了这个bug

android line android-edittext android-5.0-lollipop

10
推荐指数
1
解决办法
2040
查看次数

Kotlin 构造函数:主要和次要

刚开始使用Kotlin,您可以在其中拥有构造函数和辅助构造函数。这个问题可能听起来很简单,但我找不到答案(我已阅读文档中的“构造函数”部分) -为什么

基本上,我试图理解主要和次要背后的想法是什么。它们的使用方式有什么区别(似乎没有,所以为什么要分开)?

constructor kotlin

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

Android Q:file.mkdirs()返回false

我们有一个使用外部存储来存储一些临时文件的应用程序:图像,二进制数据。直到最近,用于该代码的代码已经运行了几年,没有太大的变化。在Android Q上不起作用:

File f = new File(Environment.getExternalStorageDirectory().toString() + File.separator + MainActivity.APP_DIR)
f.mkdirs();
// do sth with f
Run Code Online (Sandbox Code Playgroud)

mkdirs现在只返回false

清单中提供了所需的权限:

    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
Run Code Online (Sandbox Code Playgroud)

该代码可在Android的早期版本上正常运行。这种访问类型在系统级别上有变化吗?如果是这样,解决方法是什么?

android android-9.0-pie

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