Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

I get the error "Expecting member declaration" when I convert code from Java to Kotlin,why?

Tags:

android

kotlin

When I copy java Code A to a Kotlin project in Android Studio 3.01, the Code A is converted to Code B automatically.

And I add override for fun override onMenuItemClick(item: MenuItem) in Code B by the hint of Android Studio 3.01.

But I get still the error "Expecting member declaration" in Code B, what wrong with my kotlin Code B?

Code A

import android.support.v7.widget.PopupMenu;

 public static  void showPopup(View v, final Context mContext) {

        PopupMenu popup = new PopupMenu(mContext, v);
        popup.inflate(R.menu.menu_more);

        popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
            public boolean onMenuItemClick(MenuItem item) {
                return HandleMenu(item, mContext);
            }
        });
        popup.show();
 }

Code B

import android.support.v7.widget.PopupMenu;

    fun showPopup(v: View, mContext: Context) {

        val popup = PopupMenu(mContext, v)
        popup.inflate(R.menu.menu_more)

        popup.setOnMenuItemClickListener(object : PopupMenu.OnMenuItemClickListener() {
            fun override onMenuItemClick(item: MenuItem): Boolean {
                return HandleMenu(item, mContext)
            }
        })

        popup.show()

    }
like image 996
HelloCW Avatar asked Mar 17 '26 02:03

HelloCW


2 Answers

It should be override fun instead of fun override.

Also you can make use of Kotlin SAM and simplify it to popup.setOnMenuItemClickListener { item -> HandleMenu(item, mContext) } as the IDE suggests.

like image 92
Adib Faramarzi Avatar answered Mar 20 '26 00:03

Adib Faramarzi


You could simply replace this:

popup.setOnMenuItemClickListener(object : PopupMenu.OnMenuItemClickListener() {
            fun override onMenuItemClick(item: MenuItem): Boolean {
                return HandleMenu(item, mContext)
            }
        })

with this:

popup.setOnMenuItemClickListener { item -> HandleMenu(item, mContext) }
like image 25
Levi Moreira Avatar answered Mar 20 '26 00:03

Levi Moreira



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!