#android #kotlin #fragment #numberpicker
#Android #kotlin #фрагмент #numberpicker
Вопрос:
У меня есть приложение, у которого есть viewpagers, а внутри — numberpicker. Я пытаюсь отправить эти данные в свой домашний фрагмент, но сбой моего приложения. Это мой исходный код. Что я делаю не так?
Создать интерфейс для связи
interface Communicator {
fun passData(numberpicker: NumberPicker) {
}
Это мой фрагмент с numberpicker
lateinit var comm: коммуникатор
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
// Inflate the layout for this fragment
val view = inflater.inflate(R.layout.fragment_period_length, container, false)
view.number_picker_period?.minValue = 21
view.number_picker_period?.maxValue = 35
view.number_picker_period?.wrapSelectorWheel = true
val viewPager = activity?.findViewById<ViewPager2>(R.id.viewPager)
view.next_txt_period.setOnClickListener {
viewPager?.currentItem = 1
comm.passData(view.number_picker_period)
}
return view
}
Это MainActivity
val fragment1 = DaysLength()
supportFragmentManager.beginTransaction().replace(R.id.content_id, fragment1).commit()
}
override fun passData(numberpicker: NumberPicker) {
val bundle = Bundle()
bundle.putString("input_txt", number_picker_period.toString())
val transaction = this.supportFragmentManager.beginTransaction()
val fragment2 = HomeFragment()
fragment2.arguments = bundle
}
Мой домашний фрагмент
var inputtext: String? = ""
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
// Inflate the layout for this fragment
val view = inflater.inflate(R.layout.fragment_home, container, false)
inputtext = arguments?.getString("input_txt")
view.output_numberpicker.text = inputtext
return view
Что я делаю не так?
Ошибка
Unable to start activity ComponentInfo{com.example.oapp/com.example.oapp.MainActivity}: java.lang.IllegalArgumentException: No view found for id 0x7f080067 (com.example.oapp:id/content_id) for fragment DaysLength{aa77410}
Комментарии:
1. Не могли бы вы указать более подробную информацию в MainActivity?
Ответ №1:
ваша основная деятельность завершается сбоем в этой строке, поскольку она не знает, что такое представление «number_picker_period»
bundle.putString("input_txt", number_picker_period.toString())
попробуйте получить доступ к средству выбора номера через параметр в функции с именем «NumberPicker» Или, альтернативно, измените функцию интерфейса passData, чтобы возвращать строковое значение вместо всего NumberPicker