【发布时间】:2020-04-23 17:14:53
【问题描述】:
我是 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)
}
【问题讨论】:
标签: android android-fragments android-activity android-datepicker