Я новичок в Android Studio и не уверен, как она работает. Я хочу иметь возможность выбрать дату из моего средства выбора даты, которое находится во фрагменте, но не уверен, как это сделать.
Моя основная деятельность содержит навигацию снизу ко всем 4 фрагментам
class MainActivity : AppCompatActivity() {
private val mOnNavigationItemSelectedListener = BottomNavigationView.OnNavigationItemSelectedListener {item ->
when(item.itemId){
R.id.navigation_home -> {
println("home pressed")
replaceFragment(HomeFragment())
return@OnNavigationItemSelectedListener true
}
R.id.navigation_social -> {
println("social pressed")
replaceFragment(SocialFragment())
return@OnNavigationItemSelectedListener true
}
R.id.navigation_calendar -> {
println("calendar pressed")
replaceFragment(CalendarFragment())
return@OnNavigationItemSelectedListener true
}
R.id.navigation_account -> {
println("account pressed")
replaceFragment(AccountFragment())
return@OnNavigationItemSelectedListener true
}
}
false
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
bottomNavigation.setOnNavigationItemSelectedListener(mOnNavigationItemSelectedListener)
replaceFragment(HomeFragment())
}
private fun replaceFragment(fragment: Fragment){
val fragmentTransaction = supportFragmentManager.beginTransaction()
fragmentTransaction.replace(R.id.fragmentContainer, fragment)
fragmentTransaction.commit()
}
И во фрагменте календаря я создал DatePicker, как показано ниже:
<DatePicker
android:id="@+id/Date_Picker"
android:datePickerMode="calendar"
android:layout_width="wrap_content"
android:layout_height="400dp"
android:background="@drawable/curved_frame"
android:headerBackground="#FFFFFF"
android:translationY="-80dp"></DatePicker>
Я хочу иметь возможность выбрать дату в календаре, но я не знаю, куда поместить этот код. У меня есть следующий код для выбора даты, но я не уверен, куда ее поставить:
override fun onCreate(savedInstanceState: Bundle?){
super.onCreate(savedInstanceState)
setContentView(R.layout.fragment_calendar)
val datePicker = findViewById<DatePicker>(R.id.Date_Picker)
val today = Calendar.getInstance()
datePicker.init(today.get(Calendar.YEAR), today.get(Calendar.MONTH), today.get(Calendar.DAY_OF_MONTH))
{ view, year, month, day ->
val month = month + 1
val msg = "You selected: $day/$month/$year"
Toast.makeText(this@fragment_calendar, msg, Toast.LENGTH_SHORT).show()
}
}
Должен ли я создать новое действие и вызвать фрагмент календаря или я должен поместить этот код в фрагмент календаря ? Спасибо
Я добавил код ниже, но он все равно ничего не делает, когда я нажимаю на дату в моем указателе даты.
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
val datePicker = view?.findViewById<DatePicker>(R.id.Date_Picker)
val today = Calendar.getInstance()
println(today)
datePicker?.init(today.get(Calendar.YEAR), today.get(Calendar.MONTH), today.get(Calendar.DAY_OF_MONTH), object : DatePicker.OnDateChangedListener{
override fun onDateChanged(
view: DatePicker?,
year: Int,
monthOfYear: Int,
dayOfMonth: Int
) {
print(dayOfMonth)
}
})
}
// Inflate the layout for this fragment
return inflater.inflate(R.layout.fragment_calendar, container, false)
}