在android emulator上调用RESTAPI会导致应用程序崩溃
我对安卓工作室比较陌生。我正在尝试构建一个非常简单的应用程序,使用Bittrex Exchange api获取加密货币的价格。然而,每次我试图从URL获取信息时,我的应用程序都会崩溃。顺便说一下,我正在使用Kotlin。我很难解决这个问题,因为我不知道如何在调试模式下运行模拟器,只知道编译器。这是我的密码:在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
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
中包含以下内容:
有关如何在后台运行此功能的更多信息,请查看以下答案:
val result=URL(“https://bittrex.com/api/v1.1/public/getticker?market=“+market).readText()
看起来像是在主线程上运行。这将导致应用程序崩溃,出现NetworkOnMainThreadException
您可以阅读有关此异常的更多信息
另外,请确保在AndroidManifest.xml
中包含以下内容:
有关如何在后台运行此功能的更多信息,请查看以下答案:
或者,在Kotlin中,您也可以或。学习如何使用调试器是一项优先任务。然后你可以检查你是否真的从api中得到了你想要的东西。我在这里猜测,但我认为列表[6]超出了范围。我事先在IntelliJ中测试了代码,它成功了,所以我知道学习如何使用调试器并不是当务之急。然后你可以检查你是否真的从api中得到了你想要的东西。我在这里猜测,但我认为列表[6]超出了范围。我事先在IntelliJ中测试了代码,它起了作用,所以我知道不是这样。非常感谢,这非常有帮助。非常感谢,这非常有帮助。