Я сейчас программирую приложение в Android Studio, и у меня большая проблема. Основная проблема в том, что я хочу занятие с фрагментом, и у этого фрагмента есть счетчик. Я хотел найти счетчик по идентификатору, но он всегда возвращал ноль, и я прочитал, что не могу использовать findViewById, если его нет в ContentView, который я только что установил. Так что в настоящее время я пытаюсь найти фрагмент, который содержит спиннер, но я также не могу найти фрагмент, я попробовал findFragmentById и findViewById из FragmentManager. Я всегда получаю TypeCastException, и если я пытаюсь найти findFragmentById (...) !! он выбрасывает NullPointer.
Это мой MainActivity:
class MainActivity : AppCompatActivity() {
private val manager: FragmentManager? = supportFragmentManager
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
showDeviceFragment()
val fragment = manager!!.findFragmentById(R.id.fragment_holder) as DeviceFragment
val options = arrayOf("Wandhalterung (Arm)", "Gestellhalterung (Arm)", "Gestellhalterung")
fragment.option.adapter = ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, options)
}
fun showDeviceFragment() {
val transaction = manager!!.beginTransaction()
val fragment = DeviceFragment()
transaction.add(R.id.fragment_holder, fragment, "DEVICE_FRAGMENT")
transaction.addToBackStack(null)
transaction.commit()
}
}
И это DeviceFragment:
class DeviceFragment : Fragment() {
lateinit var option : Spinner
companion object {
fun newInstance(): DeviceFragment {
return DeviceFragment()
}
}
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
val view = inflater.inflate(R.layout.fragment_device, container, false)
option = view.spinner
return inflater?.inflate(R.layout.fragment_device, container, false)
}
}
Держатель фрагмента просто является FrameLayout.
Заранее спасибо