在android emulator上调用RESTAPI会导致应用程序崩溃

在android emulator上调用RESTAPI会导致应用程序崩溃,android,rest,api,kotlin,Android,Rest,Api,Kotlin,我对安卓工作室比较陌生。我正在尝试构建一个非常简单的应用程序,使用Bittrex Exchange api获取加密货币的价格。然而,每次我试图从URL获取信息时,我的应用程序都会崩溃。顺便说一下,我正在使用Kotlin。我很难解决这个问题,因为我不知道如何在调试模式下运行模拟器,只知道编译器。这是我的密码: package com.example.sebastian.cryptoapp import android.support.v7.app.AppCompatActivity import

我对安卓工作室比较陌生。我正在尝试构建一个非常简单的应用程序,使用Bittrex Exchange 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())
}
}
}
package com.example.sebastian.cryptoapp
导入android.support.v7.app.AppActivity
导入android.os.Bundle
导入java.net.URL
导入java.net.MalformedURLException
导入kotlinx.android.synthetic.main.activity\u main*
类MainActivity:AppCompatActivity(){
趣味搜索():字符串{
//读入值
var market=searchBar.getText().toString()
//从URL查询输出文本
val结果=URL(“https://bittrex.com/api/v1.1/public/getticker?market=" 
+市场)。readText()
返回结果
}
fun getPrice():字符串{
//调用搜索函数
var info=search()
//将字符串拆分为一个列表
变量列表:list=info.split(“:”,“}”)
//访问最后交易价格列表的第7个索引
返回列表[6]
}
重写创建时的乐趣(savedInstanceState:Bundle?){
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
button.setOnClickListener{
text_output.setText(getPrice())
}
}
}
此处的这一行:
val result=URL(“https://bittrex.com/api/v1.1/public/getticker?market=“+market).readText()
看起来像是在主线程上运行。这将导致应用程序崩溃,出现
NetworkOnMainThreadException

您可以阅读有关此异常的更多信息

另外,请确保在
AndroidManifest.xml
中包含以下内容:

有关如何在后台运行此功能的更多信息,请查看以下答案:

或者,在Kotlin,您也可以或。

此处的这一行:
val result=URL(“https://bittrex.com/api/v1.1/public/getticker?market=“+market).readText()
看起来像是在主线程上运行。这将导致应用程序崩溃,出现
NetworkOnMainThreadException

您可以阅读有关此异常的更多信息

另外,请确保在
AndroidManifest.xml
中包含以下内容:

有关如何在后台运行此功能的更多信息,请查看以下答案:


或者,在Kotlin中,您也可以或。

学习如何使用调试器是一项优先任务。然后你可以检查你是否真的从api中得到了你想要的东西。我在这里猜测,但我认为列表[6]超出了范围。我事先在IntelliJ中测试了代码,它成功了,所以我知道学习如何使用调试器并不是当务之急。然后你可以检查你是否真的从api中得到了你想要的东西。我在这里猜测,但我认为列表[6]超出了范围。我事先在IntelliJ中测试了代码,它起了作用,所以我知道不是这样。非常感谢,这非常有帮助。非常感谢,这非常有帮助。