将数据从活动传递到界面

时间:2019-07-16 18:06:11

标签: android-studio kotlin parameter-passing retrofit

我正在尝试将数据从一项活动传递到Kotlin中的接口。此值必须组成一个用于获取请求json的网址。可能吗?我该怎么做?

我是应用程序开发的新手,以前从未使用过接口。

package com.example.adamo3.Request

import com.example.adamo3.Response.ExchangeResponse
import retrofit2.Call
import retrofit2.http.GET

interface RequestApi {
    @GET("statistiche/09050905")
     fun getAllPosts(): Call<ExchangeResponse>
 }

我的目标是通过将“ 09050905”更改为我在一个活动中创建的参数来修改此URL“ statistiche / 09050905”。这样,我将更改URL以从服务器调用。

更新 1)我尝试插入

interface RequestApi {
@GET("statistiche/{id}")
fun getAllPosts(@Query("id") id: String ): Call<ExchangeResponse>
}

但是当我这样做时,当我从一个类(该类)中调用getAllPosts时会收到错误消息

 private val retrofit = 
 Retrofit.Builder().baseUrl("http://x.x.x.x:xxxx/")
    .addConverterFactory(GsonConverterFactory.create())
    .build()
 private val postApi=retrofit.create(RequestApi::class.java)
 private val response = postApi.getAllPosts()// i receive error here

2)为了获取所需的值,在其他类中,我使用

// receiving class
textView.text = intent.getStringExtra("Username")

// sending class
val intent = Intent(this@MainActivity,Home::class.java)
            intent.putExtra("Username" ,"ID  " + editText.text.toString())
            startActivity(intent)

我需要在建议的接口代码中定义此部分的地方吗?我需要到达接口的editText内部的值

3) 我需要在哪里定义意图的字符串?如果我在界面中执行此操作,则“在界面中不允许属性初始化程序”

interface RequestApi {
@GET("statistiche/{id}")
fun getAllPosts(@Query("id") id: String ): Call<ExchangeResponse>

String id = intent.getStringExtra("Username")//these two ways are errors
var id = intent.getStringExtra("Username")//same error

}

我想在界面内接收值

4)如果我在此处添加ID,则该ID仍会显示为红色

private val response = postApi.getAllPosts(id)//id is red

1 个答案:

答案 0 :(得分:1)

尝试一下:

interface RequestApi {
    @GET("statistiche/{id}")
     fun getAllPosts(@Query("id") id:String): Call<ExchangeResponse>
 }

用法:

// receiving class
String id = intent.getStringExtra("Username")

private val retrofit = 
 Retrofit.Builder().baseUrl("http://x.x.x.x:xxxx/")
    .addConverterFactory(GsonConverterFactory.create())
    .build()
 private val postApi=retrofit.create(RequestApi::class.java)
 private val response = postApi.getAllPosts(id) // pass id here