Я новичок в Android Разработка. Итак, теперь я создал вкладку деятельности. Я хотел передать данные из FragmentOne во FragmentTwo с помощью LiveData и следовал инструкциям здесь: https://android.jlelse.eu/communicate-between-fragments-and-activity-using-livedata-631526d6357a.
К сожалению, setOnClickListener показывал Неразрешенная ссылка : setOnClickListener .
FragmentOne:
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.Button
import android.widget.EditText
import android.widget.Toast
import androidx.core.view.forEach
import androidx.fragment.app.Fragment
import androidx.lifecycle.ViewModelProviders
import com.demicode.ccdofieldkit.ui.main.PageViewModel
import kotlinx.android.synthetic.main.fragment_one.*
import java.nio.channels.Selector
import kotlin.properties.Delegates
class FragmentOne: Fragment(), View.OnClickListener {
private lateinit var itemSelector: Selector
private lateinit var model: PageViewModel
private var average by Delegates.notNull<Double>()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
model = activity?.run {
ViewModelProviders.of(this).get(PageViewModel::class.java)
} ?: throw Exception ("Invalid activity")
// setOnClickListener throws a Unresolved reference: setOnClickListener error
itemSelector.setOnClickListener {
model.myAverage.value = average.toString()
}
}
}
FragmentTwo
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.AdapterView
import android.widget.ArrayAdapter
import android.widget.Button
import android.widget.Toast
import androidx.fragment.app.Fragment
import androidx.lifecycle.Observer
import androidx.lifecycle.ViewModelProviders
import com.demicode.ccdofieldkit.ui.main.PageViewModel
import kotlinx.android.synthetic.main.fragment_two.*
import java.lang.Exception
class FragmentTwo : Fragment(), View.OnClickListener {
private lateinit var model: PageViewModel
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
model = activity?.run {
ViewModelProviders.of(this).get(PageViewModel::class.java)
} ?: throw Exception("Invalid Activity")
model.average.observe(this, Observer {
myAverageEditText.text
})
}
}
PageViewModel:
import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.Transformations
import androidx.lifecycle.ViewModel
class PageViewModel : ViewModel() {
private val _index = MutableLiveData<Int>()
val text: LiveData<String> = Transformations.map(_index) {
"Hello world from section: $it"
}
val myAverage= MutableLiveData<String>()
fun myAverage (item: String) {
myAverage.value = item
}
Ошибка:
Unresolved reference: setOnClickListener
Если удалить:
import java.nio.channels.Selector
Появляется другая ошибка:
Unresolved reference: Selector