我对android studio比较新。我正在尝试构建一个非常简单的应用程序,使用Bittrex交换API来获取加密货币的价格。但是,每当我尝试从URL获取信息时,我的应用程序崩溃了。我顺便使用Kotlin。我在解决这个问题时遇到了麻烦,因为我不知道如何在调试模式下运行模拟器,只需编译器。这是我的代码:
package com.example.sebastian.cryptoapp
import android.support.v7.app.AppCompatActivity
import android.os.Bundle
import java.net.URL
import java.net.MalformedURLException
import kotlinx.android.synthetic.main.activity_main.*
class MainActivity : AppCompatActivity() {
fun search(): String {
//read in value
var market = searchBar.getText().toString()
//output text from URL query
val result = URL("https://bittrex.com/api/v1.1/public/getticker?market="
+ market).readText()
return result
}
fun getPrice(): String {
//calling search function
var info = search()
//split the string into a list
var list: List<String> = info.split(":", "}")
//access 7th index of list for last traded price
return list[6]
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
button.setOnClickListener {
text_output.setText(getPrice())
}
}
}
答案 0 :(得分:2)
这一行:
val result = URL("https://bittrex.com/api/v1.1/public/getticker?market=" + market).readText()
看起来像是在主线程上运行。这会导致应用程序崩溃并使用NetworkOnMainThreadException
。
您可以阅读有关此例外here的更多信息。
另外,请确保AndroidManifest.xml
:
<uses-permission android:name="android.permission.INTERNET" />
查看这些答案,了解有关如何在后台运行此内容的更多信息:
或者在Kotlin中,你也可以Anko或Coroutines。