Tag: android

麻烦“For-Loop范围必须有一个’iterator()’方法”和JSON问题

我正在教自己Kotlin和Android开发。 所以,我相信我的问题大部分是缺乏知识,但是我已经挂了这一两天了。 我认为我的问题部分是我的JSON查询,大部分是我的菜鸟。 在我下面的for循环中,我从IDE中得到以下错误:“For-Loop范围必须有一个”iterator()方法“。 这是关于’cycloneList’in:for(stormInfo in cycloneList) 我已经链接了我使用的“虚拟”JSON数据可以在这里find: https : //api.myjson.com/bins/19uurt在这个问题上保存一些空间。 问题代码 `var cycloneList = response?.body()?.currenthurricane?.stormInfo?.get(0) if (cycloneList != null) { for (stormInfo in cycloneList) { <<–Problem val newCyclone = "Name: ${cycloneList.stormName}" cycloneStrings.add(newCyclone) } }` 完整的代码 class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) //creates a new CycloneRetriever object from CycloneHelp.kt […]

为什么在更改ViewPager的padding和pagemargin之前,先滚动ViewPager?

我希望能够在两种不同的状态之间切换我的viewpager。 一个片段占据整个屏幕的状态,另一个状态显示片段两侧的预览。 以下是所需的效果: https : //im2.ezgif.com/tmp/ezgif-2-d5afc38aa7.gif 请注意,gif仅适用于viewpager中的第一项。 观看在尝试切换状态之前滚动到viewpager中的另一个项目时会发生什么情况: https : //im2.ezgif.com/tmp/ezgif-2-bf17757173.gif正如您所看到的,我在标有“2”的项目上并在第二个状态“缩小”到某个不正确的点。 以下是我的代码(在Kotlin中): fun setupListeners() { btnTest.setOnClickListener { TransitionManager.beginDelayedTransition(binding.viewPager) if(stateTwo) { resetViewPagerStyling() } else { setViewPagerStateTwo() } stateTwo = !stateTwo } } fun setViewPagerInStateTwo() { // Setup view pager to show siblings viewPager.clipToPadding = false // Setup margins to show pages to the side viewPager.setPadding(100, 100, […]

Json给kotlin数据类

有没有现成的服务从json模型生成kotlin数据类的方式http://www.jsonschema2pojo.org/ site? 我的新项目已经超过了复杂的API响应,所以它会节省我的时间。

Android Studio不断生成类似Eclipse的文件

我正在使用Android Studio 3.0.1,并且我注意到,对于我的一个项目(只有这个项目),它会生成.project文件和像Eclipse这样的bin目录(我想)。 该项目是在AS 3.0.1中创建的,并没有从Eclipse或其他任何东西中迁移过来。 它也不使用任何花哨的Gradle插件或依赖 – 只是生成的(AppCompat + Kotlin)。 你有什么想法为什么这样做? 另外,当我试图准备一个最小化的复制项目时,我注意到问题只是通过复制粘贴整个项目目录而消失,因此可能没有意义与您共享。 使用两个项目副本(让我们称他们为original和copy )我能够发现,当我关闭Android Studio并使用git clean -xfd清理两个副本 copy在打开时没有问题 – 没有类似Eclipse的文件 original打开时仍然有问题(文件生成) diff -r在打开它们之前(所以在git clean )只给出这个: 二进制文件../PWTA_Proj2/.git/index和./.git/index不同 他们两个都会让Android Studio在打开时显示如下错误: 检测到不支持的模块:以下模块不支持编译:PWTA_Proj2。 不幸的是,在一个项目中不能有非Gradle Java模块和Android-Gradle模块。 尽管有错误,我可以正常建立项目。 另外我没有任何非Gradle模块 – 该项目非常简单,由AS生成。 唯一不太常见的是该项目包含一些AIDL文件。 编辑#1:Gradle文件: 顶级build.gradle : // Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { […]

Android测试运行时不需要启动模拟器(选择设备对话框不会出现) – 空的测试套件

我正在努力运行在androidTest文件夹下的测试 – 目前即使当我不启动模拟器没有它的测试运行,没有对话框强迫我选择我必须运行测试的设备。 它导致问题,当我运行测试错误出现在控制台中: 处理完成退出代码1类未find:“com.someapp.shoppinglistapp.ShoppingListDaoTest”空的测试套件。 只有当我手动编辑配置这个单独的方法选择“部署目标选项”,并选择“打开选择部署目标对话框”它运行良好,我选择模拟器和测试运行。 但这意味着我将不得不手动为我的androidTest包中的每个测试方法。 究竟发生了什么? 我甚至试过这个全新的项目,配置成Android Studio 3.0.1中的Kotlin项目。 你可以自己尝试。

Android Studio 3.1 Canary 3 – Gradle同步失败

不知道为什么Android Studio 3.1 Canary 3有bug并停止工作,我将gradle更新为3.1-alpha03 ,并停止工作,无论我再次下载该项目,是否再次下载了Android Studio。 我已经签出了旧版本的项目,但是这个消息仍然显示: Gradle sync failed: com.android.tools.idea.gradle.project.model.AndroidModuleModel.getSelectedVariant()Lcom/android/tools/idea/gradle/project/model/ide/android/IdeVariant; (8s 806ms) 我已经删除.idea文件夹, .gradle文件夹,无效并重新启动 我不知道还有什么可做的,不能运行或使用IDE。 编辑: EDIT2: 新项目也不起作用

许多小模块,或几个大型模块的最佳构建性能?

几年前,当第一次采用gradle for Android(在Gradle 2.0之前)时,我发现使用和取决于一个模块有一些开销,所以我远离将我的项目拆分成更小的模块,而是创建非常大的模块。 在尝试了一些其他的构建系统(比如Buck)之后,通过将你的代码分解成多个小模块来获得性能。 一些像Kotlin这样的现代编程语言甚至有专门建立在将你的代码分解成模块的概念的可见性修饰符。 我们目前在Gradle 2.14.1(差不多3.0),在过去几个版本中,他们引用了巨大的性能收益。 随着Gradle / Android插件在过去几年的变化,它现在是否产生更快的构建,将您的代码拆分成更小的模块,或者使用更少的大模块?

使用fragmenttransaction添加嵌套片段时,不能唯一地标识布局

我正在尝试执行以下操作: 在活动中, 将容器替换为一个片段(TestFragment) 这个片段的布局包含一个被另一个片段(TestSubFragment) 替换的容器, 单击TestSubFragment使活动在根容器上添加一个新的TestFragment TestActivity.kt class TestActivity : AppCompatActivity(), TestSubFragment.OnFragmentInteractionListener { override fun onFragmentInteraction(id: Int) { supportFragmentManager.beginTransaction().add(R.id.container, TestFragment.newInstance(id)).addToBackStack(null).commit() } override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_test) supportFragmentManager.beginTransaction().replace(R.id.container, TestFragment.newInstance(1)).addToBackStack(null).commit() } } TestFragment.kt class TestFragment : Fragment() { private var id: Int? = null override fun onCreateView(inflater: LayoutInflater?, container: ViewGroup?, savedInstanceState: Bundle?): View? { val […]

如何正确显示Google房间使用的异步任务的进度

我使用Google Room来实现Android应用程序(Kotlin代码)中的数据持久性。 房间要求所有的操作(来自和来自数据库的查询)是异步的。 我希望用户等待操作执行,防止他在查询结束之前与不能正确配置的组件进行交互。 我怎么能做到这一点,因为我不能从异步任务访问UI线程? PS:我也做了一些API调用进度/加载指标是很好的。 我在这些调用中使用RxJava,但是我对这项技术相当陌生,而且我不确定如何正确地构造它。 数据库操作示例: private fun getDataFromCache() { //show progress indicator here execute({ try { //Get items from cache val entities = daoData.findAll() if (entities.isNotEmpty()) { //do something } else { //do something else } } catch (e: Exception){ Log.e(“error”, e.toString()) } finally{ //dismiss progress indicator here } }) }

Androidunit testing没有被嘲笑

我遵循本指南https://sites.google.com/a/android.com/tools/tech-docs/unit-testing-support,但我坚持这个错误: junit.framework.AssertionFailedError: Exception in constructor: testSaveJson (java.lang.RuntimeException: Method put in org.json.JSONObject not mocked. See https://sites.google.com/a/android.com/tools/tech-docs/unit-testing-support for details. 我修改了Gradle构建像指南说,​​但它没有区别 testOptions { unitTests.returnDefaultValues = true }