微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何制作菜单项单个重置按钮?

如何解决如何制作菜单项单个重置按钮?

我想制作重置按钮。 当我点击重置按钮时,对于 R.id.item1R.id.item2ischecked 将被设置为 false,和R.id.item3

当我单击按钮时,我想将“Mmenu”分组为 false

我在 button.setonClickListener(){item.isChecked = false} 试过 onCreateOptionsMenu(menu: Menu) 但没有用...

我在 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
    }
}

解决方法

您可以使用 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()
    }
,

invalidateOptionsMenu()

这是重置的解决方案!!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。