Как получить переменную из другого класса в kotlin? - PullRequest
0 голосов
/ 02 мая 2019

Я хочу получить переменную из действия и использовать ее в другом классе.Эта переменная будет заполнена пользователем в editText, который называется editTextSerie

 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""из другого класса с именем" Search Activity ", поэтому я создал переменную" 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 происходит из XML-кода SearchActivity.) и использовать его в responseCall с переменной «nomeS»

1 Ответ

1 голос
/ 02 мая 2019

Что такое 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) {

        }
    })

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...