如何从Kotlin中的另一个类获取变量?

时间:2019-05-01 22:32:32

标签: android class variables android-activity kotlin

我想从一个活动中获取一个变量,并在另一个类中使用它。 用户将在名为editTextSerie

的editText中填充此变量。
 override fun searchSeries(listener: OnDataListener) {

        val retrofit = Retrofit.Builder().addConverterFactory(GsonConverterFactory.create())
            .baseUrl("http://api.themoviedb.org/3/")
            .build()

        val client = retrofit.create(MovieDBApiInterface::class.java)

        val objetoClasse1 = SearchActivity()

        var nomeS = objetoClasse1.editTextSerie.text.toString().trim()


        val responseCall = client.searchSeries("API_KEY", "pt-BR", nomeS)

        responseCall.enqueue(object : Callback<AllSeriesResponse> {
            override fun onResponse(call: Call<AllSeriesResponse>?, response1: Response<AllSeriesResponse>?) {
                listener.onSuccess(response1!!.body()!!.results)
            }

            override fun onFailure(call: Call<AllSeriesResponse>?, t: Throwable?) {
                listener.onFailure(t!!.message.toString())
            }
        })
    }

此函数“ searchSeries”来自类“ Series”。

我想从另一个名为“搜索活动”的类中获取“ editTextSerie”, 所以我创建了变量“ nomeS”来接收它的值。

class SearchActivity : AppCompatActivity() {

    var botaoSearch: AppCompatImageButton? = null


    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_search)



        botaoSearch = findViewById(R.id.btn_search)

        botaoSearch?.setOnClickListener {


          var nomeSerie = editTextSerie.text.toString().trim()


        }
    }
}

我想接收此值(editTextSerie的值来自SearchActivity的XML),并在responseCall上将其与“ nomeS”变量一起使用

1 个答案:

答案 0 :(得分:1)

什么是OnDataListener?不确定是接口还是抽象类,所以我会写一些伪代码。

首先将函数searchSeries的参数更改为

searchSeries(text: String, listener: OnDataListener)

因此,在类Series中,您可以在函数searchSeries中获取数据:

    override fun searchSeries(text: String, listener: OnDataListener) {
    // ... 
    // you can get the "text" string
    }

然后编辑您的SearActivity的监听器:

    class SearchActivity : AppCompatActivity() {

        var botaoSearch: AppCompatImageButton? = null

        // create class "Series"
        val series = Series()

        override fun onCreate(savedInstanceState: Bundle?) {
            super.onCreate(savedInstanceState)
            setContentView(R.layout.activity_search)

            botaoSearch = findViewById(R.id.btn_search)

            botaoSearch?.setOnClickListener {

                var nomeSeries = editTextSerie.text.toString().trim()
                searchSeries(nomeSeries)
            }
        }

        private fun searchSeries(text: String) {

            series.searchSeries(text, object : OnDataListener {

                override onSuccess(a0: ...) {

                }

                override onFailure(message: String) {

                }
            })

        }
    }

如果OnDataListener是抽象类:

    series.searchSeries(text, object : OnDataListener() {

        override onSuccess(a0: ...) {

        }

        override onFailure(message: String) {

        }
    })