【问题标题】:how can i make menu item (single) reset button?如何制作菜单项(单个)重置按钮?
【发布时间】:2021-05-04 17:31:40
【问题描述】:

我想制作重置按钮。 当我点击重置按钮时,ischecked 将被设置为 R.id.item1R.id.item2false em>R.id.item3.

当我点击按钮时,我想将 Group 'Mmenu' 设置为 false

我在onCreateOptionsMenu(menu: Menu) 中尝试了button.setOnClickListener(){item.isChecked = false} 但没用...

我在when (item.itemId) {R.id.itemRotate -> 后面尝试了同样的事情 但也没有用...

class MainActivity : AppCompatActivity() {


    public override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        title = "제주도 풍경"

        button.setOnClickListener(){
            imageView1.visibility = View.INVISIBLE
            imageView1.rotation = Float.parseFloat("0")
            edtAngle.setText("0")
        }

    }

    override fun onCreateOptionsMenu(menu: Menu): Boolean {
        super.onCreateOptionsMenu(menu)
        val mInflater = menuInflater
        mInflater.inflate(R.menu.menu1, menu)
        return true
    }

    override fun onOptionsItemSelected(item: MenuItem) : Boolean {

        when (item.itemId) {
            R.id.itemRotate -> {
                imageView1.visibility = View.VISIBLE
                imageView1.rotation = Float.parseFloat(edtAngle.text.toString())
                return true
            }
            R.id.item1 -> {
                imageView1.visibility = View.VISIBLE
                imageView1.setImageResource(R.drawable.jeju2)
                item.isChecked = true

                return true
            }
            R.id.item2 -> {
                imageView1.visibility = View.VISIBLE
                imageView1.setImageResource(R.drawable.jeju14)
                item.isChecked = true
                return true
            }
            R.id.item3 -> {
                imageView1.visibility = View.VISIBLE
                imageView1.setImageResource(R.drawable.jeju6)
                item.isChecked = true
                return true
            }
        }
        return false
    }
}

【问题讨论】:

    标签: kotlin menuitem


    【解决方案1】:

    您可以使用 HashMap 来做到这一点:

    var checked: HashMap<Int, Boolean> = HashMap()
    

    初始化为假

    val ids = listOf(R.id.item1, R.id.item2, R.id.item3)
    
            ids.forEachIndexed { index, _ ->
                checked[index] = false
            }
    

    然后

    when (item.itemId) {
                R.id.itemRotate -> {
                    imageView1.visibility = View.VISIBLE
                    imageView1.rotation = Float.parseFloat(edtAngle.text.toString())
                    return true
                }
                R.id.item1 -> {
                    imageView1.visibility = View.VISIBLE
                    imageView1.setImageResource(R.drawable.jeju2)
                    checked[item.itemId] = true
    
                    return true
                }
                R.id.item2 -> {
                    imageView1.visibility = View.VISIBLE
                    imageView1.setImageResource(R.drawable.jeju14)
                    checked[item.itemId] = true
                    return true
                }
                R.id.item3 -> {
                    imageView1.visibility = View.VISIBLE
                    imageView1.setImageResource(R.drawable.jeju6)
                    checked[item.itemId] = true
                    return true
                }
            }
    

    重置:

    fun reset() {
            ids.forEachIndexed { index, _ ->
                checked[index] = false
            }
        }
    

    在这里调用:

    button.setOnClickListener(){
            imageView1.visibility = View.INVISIBLE
            imageView1.rotation = Float.parseFloat("0")
            edtAngle.setText("0")
            reset()
        }
    

    【讨论】:

    • 非常感谢!!但我无法清除问题... 'checked[index] = false' 不起作用 check[item.itemId] = true to... 抱歉,我该怎么办?
    【解决方案2】:

    invalidateOptionsMenu()

    这是重置的解决方案!

    【讨论】:

      猜你喜欢
      • 2012-08-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-07-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多