【发布时间】:2018-10-29 06:19:46
【问题描述】:
我有一个包含变量的 A 类。我需要在 B 类接口文件中传递变量,以便在 Kotlin 中获得动态输出。如果它是一个常量字符串,那么我可以检索结果,但我不确定如何即时更改该值。 我使用下面的代码进行测试,但这是静态 JSON 值。
Class:A
val intent= Intent(customView.context,ApiMovies::class.java)
intent.putExtra(MOVIES_TITLE_KEY,Movies?.name)
Class:B
interface ApiMovies {
// val name= intent.getStringExtra(MOVIES_TITLE_KEY,Movies?.name)
@GET("get_movie.php?name=DunKirk")
fun getMovies() : Observable<MovieResponse>
}
Class:C
val retrofit : Retrofit = Retrofit.Builder()
.baseUrl("https://www.imdb.com")
Class:D
class MovieResponse {
lateinit var data : List<Movie>
}
【问题讨论】:
-
Retrofit 不使用这样的意图?我不认为你的代码可以工作。 (您使用的
Intent构造函数用于Activity之类的组件)您必须使用retrofit.create(ApiMovies::class.java)并调用ApiMovies接口的自动实现的getMovies方法。参见例如medium.com/@elye.project/… - 如果您想将名称设为变量,请使用例如@GET("get_movie.php") fun getMovies(@Query("name") name: String)(或查询地图,但比可能需要的灵活性更大) -
如果 Intent 在 Retrofit 中不起作用,如何传递 name 变量
-
fun getMovies(@Query("name") name: String):Observable
getMovies val apiMovies = retrofit.create(ApiMovies::class.java) println("Hello Api电影:$apiMovies") apiMovies.getMovies() -
您能否edit 您的问题并提供更完整的代码示例,尤其是您遇到的错误?如果不查看所有相关部分,很难判断您的代码有什么问题。并解释
Intent的用途。那部分对我来说根本没有意义。 -
请不要只参考一些 github,您的问题应该包含与回答相关的所有部分 (minimal reproducible example)。该 github 中也没有任何内容使用如图所示的意图,也没有解释 you 想要实现的目标。您的 `val name= intent.getStringExtra` 代码可能需要放在
C类的某个地方,因为如果您查看像 square.github.io/retrofit 上的官方示例这样的改造示例,您会看到您需要调用接口中定义的方法, 参数不是接口的vals。
标签: android kotlin retrofit retrofit2