我试图从CalendarView中获取日期的数值,这应该可以通过使用calendarView.date
来实现。我已将此功能附加到一个按钮,该按钮在TextView中显示long calendarView.date
。它在第一次按下按钮时工作正常但在我选择新日期并再次按下按钮时没有更新TextView。
这是我的MainActivity.kt:
package com.androidas.mindscape
import android.app.Activity
import android.os.Bundle
import android.support.v7.app.AppCompatActivity
import android.view.Menu
import android.view.MenuItem
import android.view.View
import kotlinx.android.synthetic.main.activity_main.*
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
setSupportActionBar(findViewById(R.id.tlbMain))
}
override fun onCreateOptionsMenu(menu:Menu):Boolean {
// Inflate the menu; this adds items to the action bar if it is present.
menuInflater.inflate(R.menu.toolmenu, menu)
return true
}
override fun onOptionsItemSelected(item: MenuItem) = when (item.itemId) {
R.id.actAdd -> {
textView2.text = "reset" //my idea was to reset the text first, but this didn't work.
textView2.text = (clvMain.date).toString()
true
}
R.id.actPersonalities -> {
// User chose the "Favorite" action, mark the current item
// as a favorite...
true
}
R.id.actList -> {
true
}
else -> {
// If we got here, the user's action was not recognized.
// Invoke the superclass to handle it.
super.onOptionsItemSelected(item)
}
}
}
其中R.id.actAdd
是操作栏溢出菜单中的项目。
我看到它的方式,只要按下按钮,TextView就应该使用新选择的日期进行更新。有任何想法吗?也许这很简单,但我无法弄明白。 干杯!
答案 0 :(得分:0)
在onCreate()之前添加此声明var dateString: String = Date().toString()
。
在onCreate()中添加此代码:
clvMain.setOnDateChangeListener { view, year, month, dayOfMonth ->
dateString = "$year/$month/$dayOfMonth"
}
并使用dateString代替(clvMain.date).toString()