在lateinit声明后variables不更新,无法返回

OnCreateView函数 override fun onCreateView(inflater: LayoutInflater?, container: ViewGroup?, savedInstanceState: Bundle?): View? { super.onCreateView(inflater, container, savedInstanceState) val view1 = inflater?.inflate(R.layout.fragment_home, container, false) val recyclerview = view1!!.findViewById(R.id.recycler_view) recyclerview.layoutManager = LinearLayoutManager(this.activity) //val name3: Array = recyclerview.adapter = CustomAdaptor(fetchJson()) return view1 } Fetchjson函数 fun fetchJson(): Array { println(“Attempting to fetch JSON”) val url1 = “https://go-api-api.herokuapp.com/” //var a1 = Articles(1, “rsdfd”, […]

如何从Kotlin函数types返回

我正在使用函数types来存储要在按钮单击时调用的代码。 如何从这个函数types返回 代码如下: var SearchClickEvent: ((searchString: String) -> Unit)? = null inputDialog!!.SearchClickEvent = Search_Click private val Search_Click = { searchString: String -> if(searchString.isEmpty()){ return//Error msg : return is not allowed here //How to return from here } } 注意:我将一段代码存储在一个不调用或写入任何函数的variables中

如何以编程方式获取Android导航栏的高度和宽度?

Android的屏幕底部的黑色导航栏不容易移动。 自3.0以来,它一直是Android的一部分,作为硬件按钮的替代品。 这是一张图片: 我怎样才能得到这个UI元素的宽度和高度的像素的大小?

Android Studio 3.0.1(错误:’java’插件已被应用,但与Android插件不兼容。)

我最近更新我的Android工作室到3.0.1版本,我一直在我的Gradle应用程序编译有问题。 我在尝试在android studio 3.0.1上构建我的gradle时遇到此错误Error:The ‘java’ plugin has been applied, but it is not compatible with the Android plugins. 我已经更新了我的Java开发工具包到最新的版本 请帮我一个新手。 以下是我的构建脚本。 我已经更新了我的Java开发工具包到最新的版本 apply plugin: ‘com.android.application’ apply plugin: ‘kotlin’ buildscript { repositories { google() // Gradle 4.0+//////// maven { url “https://maven.google.com” } // Gradle < 4.0 } dependencies { classpath "com.android.tools.build:gradle:3.0.1" } } android { compileSdkVersion […]

Android:动态权限请求设计模式

我在android编程方面很新颖。 我想问一下关于startActivityForResult()和ActivityCompat.requestPermissions()函数及其设计。 我知道这些函数的结果是分别由另一个Activity函数( onActivityResult()和onRequestPermissionsResult() )处理的。 但我不明白为什么这样设计。 尤其是使用ActivityCompat.requestPermissions() 。 为什么我必须控制是否有权限( ContextCompat.checkSelfPermission() ),如果我没有要求它( ActivityCompat.requestPermissions() )。 如果我得到这个许可,然后处理完全不同的function? 我希望有这样的想法: askPermission(Context context, String permission, Runnable permissionGranted, Runnable permissionDenied) 如果我已经有权限,或者如果我从用户那里得到它,它将调用permissionGranted。 有了这个function,我将不得不关心,如果我有权限,或者我没有它。 现在,我必须distonguish如果我有权限,然后做同步任务,或者我没有它,然后在onRequestPermissionsResult() ,我经常做同样的,如果我已经有权限做的“异步”任务。 我的问题是:是否有一些原因,为什么这样设计的权限? 有没有一些function,我上面写了让我只是说如果我有什么做什么,如果我没有权限(以function的方式)做什么? 还是有一些设计模式,以便于处理权限和结果的启动活动? 感谢您的时间和一些解释,如果你知道为什么这个设计很好。

在哪里绘制反应式编程线

在我的项目中,我一直在使用RxJava大约一年。 随着时间的推移,我开始非常喜欢它 – 现在我想也许太多了… 我写的大多数方法现在都有某种forms的Rx,这太棒了! (直到不是)。 我现在注意到有些方法需要大量的工作来组合不同的可观察生产方法。 我感觉到虽然我明白我写的东西,但下一位程序员很难理解我的代码。 在底线之前,让我直接从我在Kotlin的代码给出一个例子(不要太深入): private fun getCachedEntities( getManyFunc: () -> Observable<Timestamped<List>>, getFromNetwork: () -> Observable<ListResult>, getFunc: (String) -> Observable<Timestamped>, insertFunc: (T) -> Unit, updateFunc: (T) -> Unit, deleteFunc: (String) -> Unit) = concat( getManyFunc().filter { isNew(it.timestampMillis) } .map { ListResult(it.value, “”) }, getFromNetwork().doOnNext { syncWithStorage(it.entities, getFunc, insertFunc, updateFunc, deleteFunc) }).first() […]

从Glide库中的缓存中删除图像

我在我的一个项目中使用Glide来显示来自文件的图像。 下面是我的代码如何显示图像: Glide.with(DemoActivity.this) .load(Uri.parse(“file://” + imagePath)) .into(mImage); 这个位置的图像( imagePath )不断变化。 默认情况下,Glide缓存它在ImageView显示的ImageView 。 因此,Glide正在显示缓存中的第一张图像,以显示该位置的新图像。 如果我更改位置imagePath与其他具有相同名称的图像的图像然后Glide显示第一个图像,而不是新的。 两个查询是: 是否有可能永远从文件的图像,而不是缓存? 这样问题就解决了。 获取新替换的图像之前是否可以清除缓存中的图像? 这也将解决问题。

kapt:如何处理测试资源?

我有一个使用kapt进行注释处理和代码生成的项目(基于注释)。 它在主要来源工作,但不在测试来源。 有些来源(例如如何在androidTest范围中使用kapt )建议运行gradle kaptTest ,但是这也不起作用。 它将任务报告为“最新”,甚至在清理干净之后。 也许这个建议是唯一的android。 我从https://github.com/JetBrains/kotlin-examples/tree/master/gradle/kotlin-code-generation下载了示例项目,在测试源中添加了一个注释用法,我在那里得到了相同的行为。 它适用于主要来源,不适用于测试来源。 输出中唯一奇怪的是: > Task :example:compileKotlin Using kotlin incremental compilation w: [kapt] Sources output directory is not specified, skipping annotation processing 但是正如你所看到的,这不是测试来源,而是主要来源,而注释处理器就是应用在那些上。 我在注释处理器中添加了一个打印输出。 它显示为compileKotlin,但不是compileTestKotlin。 那么,使kapt在测试源上工作的魔术是什么? PS:我想有人会问我的build.gradle。 这与我链接的例子是一样的,所以如果你能使它适用于这个例子,我可以集成到我的构建文件中。 PPS:我发现只有类似的问题是Kotlin的kapt插件for gradle不能用于自定义源集(JMH) ,他们建议发布一个bug报告。 所以也许这是kapt-gradle-plugin中的一个bug?

如何获取RxJava 2自定义运算符上的RetroFit请求的URL和方法?

所以我正在尝试为Http请求集成Firebase性能,并像这里显示的那样手动添加它们(步骤9)。 我正在使用Retrofit 2和RxJava 2,所以我有做一个自定义运算符的想法,检查下面的代码: 改造2客户端 @GET(“branch-{environment}/v2/branches”) fun getBranch(@Path(“environment”) environment: String, @Query(“location”) location: String, @Query(“fulfilment_type”) fulfilmentType: String): Single<Response> RxJava呼叫改造客户端 private val client: BranchClient = clientFactory.create(urlProvider.apiUrl) override fun getBranch(postCode: String, fulfilmentType: FulfilmentType): Single { return client .getBranch(environment, postCode.toUpperCase(), fulfilmentType.toString()) .lift(RxHttpPerformanceSingleOperator(URL?, METHOD?)) .map { it.body() } .subscribeIO() //custom Kotlin extension .observeMain() //custom Kotlin extension … } RxJava 2自定义操作员通过电梯: […]

如果recyclerView本身返回AmbiguousViewMatcherException,那么在Espresso中做什么?

问题是我有一个选项卡式的视图,每个页面包含相同的recyclerView与不同的数据属于该选项卡。 如果我没有描述得太好,它基本上与本教程中描述的相同: https : //github.com/codepath/android_guides/wiki/ViewPager-with-FragmentPagerAdapter 我正在使用Espresso创建仪器测试,当我尝试打电话时 onView(withId(R.id.recycler_view) 与RecyclerViewAction一起使用,我返回了AmbiguousViewMatcher,告诉我在层次结构中有多个recyclerView。 我怎样才能指定一个特定的recyclerView? 我假设我需要某种“customRecyclerViewMatcher”