解决方案:
class MainActivity : AppCompatActivity() {
lateinit var playerStats: PlayerStats
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
Picasso.get().load("https://...../....../example.png").into(Viewer)
var PlayerName: String = ""
fun fetchJson() {
val url = "https://my.api.site/example/"
val request = Request.Builder().url(url).build()
val client = OkHttpClient()
client.newCall(request).enqueue(object : Callback {
var mainHandler = Handler(this@MainActivity.getMainLooper())
override fun onResponse(call: Call, response: Response) {
mainHandler.post {
val body = response.body()?.string()
if (body == null) return@post
println(body)
val gson = GsonBuilder().create()
playerStats = gson.fromJson(body, PlayerStats::class.java)
println(playerStats)
// TODO Now you can access to your view and set every thing to textView
textView.text = playerStats.username
}
}
override fun onFailure(call: Call, e: IOException) {
println("API execute failed")
}
})
}
buttonGO.setOnClickListener {
PlayerName = editText.text.toString()
fetchJson()
if (PlayerName == null || PlayerName.trim() == "") {
println("please input data, input cannot be blank")
} else {
Picasso.get().load("https://...../...../" + PlayerName + ".png")
.into(Viewer)
textView.setText(PlayerName).toString()
}
}
}
} ```
我为我的api请求准备了这段代码,当我使用调试器时,它可以工作。
我可以在PlayerStats课程中看到结果,但现在我遇到了一个问题。
但是在MainActivity.class
这个函数
不工作:
val url = "https://api.example.com/..../"
val request = Request.Builder().url(url).build()
val client = OkHttpClient()
client.newCall(request).enqueue(object: Callback {
override fun onResponse(call: Call, response: Response) {
val body = response?.body?.string()
println(body)
val gson = GsonBuilder().create()
val PlayerStats = gson.fromJson(body, PlayerStats::class.java)
println(PlayerStats)
}
override fun onFailure(call: Call, e: IOException) {
println("API execute failed")
}
})
统计数据。课程:
class PlayerStats(val username: String , val level: Double )
我需要一种从main活动
class MainActivity(val mystats: PlayerStats) : AppCompatActivity(){
不工作,因为零参数。
如果我试图修复:
class MyActivity: AppCompatActivity() {
var myStats: Stats? = null
//..
}
IDE说它需要一个安全调用
或一个非空
断言调用,但如果我尝试使用非空
断言调用,应用程序就会崩溃,我会得到以下错误:
2020-03-05 18:58:02.803 23276-23276/我的。实例包E/AndroidRuntime:致命异常:主进程:我的。实例包裹,PID:23276科特林。Kotlinnullpointer在我的。实例包裹MainActivity$onCreate$1。在我的位置调用(MainActivity.kt:31)。实例包裹主要活动$onCreate$3。Android上的onClick(MainActivity.kt:68)。看法看法android上的performClick(View.java:7125)。看法看法android上的performClickInternal(View.java:7102)。看法看法在Android上获得3500美元(View.java:801)。看法查看$PerformClick。在android上运行(View.java:27336)。操作系统。汉德勒。android上的handleCallback(Handler.java:883)。操作系统。汉德勒。android上的dispatchMessage(Handler.java:100)。操作系统。活套。android上的loop(Looper.java:214)。应用程序。活动线程。java上的main(ActivityThread.java:7356)。朗,反思一下。方法在com上调用(本机方法)。Android内部的操作系统。RuntimeInit$MethodAndArgsCaller。在com上运行(RuntimeInit.java:492)。Android内部的操作系统。合子体。main(ZygoteInit.java:930)
用安全调用
我得到null
作为输出
完整代码:
MainActivity.class:
package my.example.package
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import com.google.gson.GsonBuilder
import com.squareup.picasso.Picasso
import kotlinx.android.synthetic.main.activity_main.*
import okhttp3.OkHttpClient
import okhttp3.Request
import okhttp3.*
import java.io.IOException
class MainActivity : AppCompatActivity(){
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
Picasso.get().load("https://...../....../example.png").into(Viewer)
var PlayerName: String = ""
fun fetchJson() {
val url = "https://my.api.site/example/"
val request = Request.Builder().url(url).build()
val client = OkHttpClient()
client.newCall(request).enqueue(object: Callback {
override fun onResponse(call: Call, response: Response) {
val body = response?.body?.string()
println(body)
val gson = GsonBuilder().create()
val PlayerStats = gson.fromJson(body, PlayerStats::class.java)
println(PlayerStats)
}
override fun onFailure(call: Call, e: IOException) {
println("API execute failed")
}
})
}
buttonGO.setOnClickListener {
PlayerName = editText.text.toString()
fetchJson()
if (PlayerName == null || PlayerName.trim() == "") {
println("please input data, input cannot be blank")
} else {
Picasso.get().load("https://...../...../" + PlayerName + ".png")
.into(Viewer)
textView.setText(PlayerName).toString()
}
}
}
}
玩家状态。课程:
package my.example.package
class PlayerStats(val username: String , val level: Double )
将此替换为您的代码:
class MainActivity : AppCompatActivity() {
lateinit var playerStats: PlayerStats
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
Picasso.get().load("https://...../....../example.png").into(Viewer)
var PlayerName: String = ""
fun fetchJson() {
val url = "https://my.api.site/example/"
val request = Request.Builder().url(url).build()
val client = OkHttpClient()
client.newCall(request).enqueue(object : Callback {
var mainHandler = Handler(this@MainActivity.getMainLooper())
override fun onResponse(call: Call, response: Response) {
mainHandler.post {
val body = response.body()?.string()
if (body == null) return@post
println(body)
val gson = GsonBuilder().create()
playerStats = gson.fromJson(body, PlayerStats::class.java)
println(playerStats)
// TODO Now you can access to your view and set every thing to textView
textView.text = playerStats.username
}
}
override fun onFailure(call: Call, e: IOException) {
println("API execute failed")
}
})
}
buttonGO.setOnClickListener {
PlayerName = editText.text.toString()
fetchJson()
if (PlayerName == null || PlayerName.trim() == "") {
println("please input data, input cannot be blank")
} else {
Picasso.get().load("https://...../...../" + PlayerName + ".png")
.into(Viewer)
textView.setText(PlayerName).toString()
}
}
}
} ```
我试图用OkHttp和Cucumber在静态编程语言中设置一个Spring启动项目,并且在运行Cucumber任务时遇到以下错误。如何修复? 还有build gradle kts片段 我看到了这个错误https://github.com/square/okio/issues/647看起来可能是它,并修复了这个build.gradle,我如何将其翻译为kotlinbuild.gradle.kts?
如图所示,https://stackoverflow.com/a/16639438/8949356,在Java中,当声明的类是公共类时,可以重写其函数 但是我想知道如何用静态编程语言编写完全相同的代码,我已经尝试了很多,但没有找到任何关于这个主题的东西。我可以在Java中去做这件事,但我的其余代码是用静态编程语言编写的,而且我不能一直带着这种怀疑;静态编程语言对我来说是一个很好的工具,我想学习它。
为了描述Gradle构建脚本,我们可以通过< code>build.gradle.kts文件使用Kotlin。在< code>dependencies和build 部分全局定义要使用的Kotlin版本是一个常见的问题(在给定的情况下使用不同的版本是相当罕见的)。 请考虑以下代码 (Gradle 4.3.1): 如您所见,kotlin(在本例中为1.2.30)定义了两次:和,它们通常没有区别。由于D
上周我更新了Kotlin 1.5,昨天看到谷歌打算让Jetpack成为设计UI的首选选项后,我想做一些测试。 问题是将我的项目更新为静态编程语言1.5,当尝试构建项目时,我得到以下错误: 静态编程语言1.5与Jetpack Compose不兼容吗?在谷歌搜索问题后,我找到了版本,其中提到了Jetpack Compose,但不是以“不兼容”的方式。 你对此有任何答案吗?我应该使用吗?在这种情况下,我
我正在尝试用Java编写下面用Kotlin编写的代码。我无法创建DefaultElementsAdapter,因为我无法获得正确的语法。 我无法获得正确的Java代码 Kotlin班是这样的 我正在尝试使用图书馆https://github.com/m7mdra/HtmlRecycler
如何在 Kotlin 中制作 2D Int 数组?我正在尝试将此代码转换为 Kotlin: 这是我尝试过的一个尝试,第一个2D阵列不起作用,但我让1D阵列起作用了: