家不是封闭的 class

Home is not an Enclosing class

我正在尝试将图像按钮放在另一个 class 中,但是...我从未使用过 classes,所以我不完全知道我在做什么。它说 "Home" 不是封闭的 class。这是什么意思?我该如何防止这种情况?这也有助于将来使主要活动代码在 classes 中更易于阅读,而不是将它们全部放在一个文件中。

import android.view.MenuItem;
import android.view.View;
import android.webkit.WebView;
import android.widget.ImageButton;
import android.widget.PopupMenu;

public class Options_menu implements View.OnClickListener {

private ImageButton options_menu;
private WebView webView;



@Override
public void onClick(View view) {


    options_menu.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            PopupMenu popup = new PopupMenu(Home.this, options_menu);
            popup.getMenuInflater().inflate(R.menu.popup_menu, 
 popup.getMenu());
            popup.setOnMenuItemClickListener(new 
 PopupMenu.OnMenuItemClickListener() {
                public boolean onMenuItemClick(MenuItem item) {
                    switch (item.getItemId()) {
                        case R.id.back:
                            if (webView.canGoBack()) {
                                webView.goBack();
                            } else {
                                webView.reload();
                            }
                            return true;
                        case R.id.forward:
                            if (webView.canGoForward()) {
                                webView.goForward();
                            } else {
                                webView.reload();
                            }
                            return true;
                        case R.id.refresh:
                            webView.reload();
                        default:
                            return false;
                    }
                }
            });
            popup.show();
        }
    });
}
}

错误在第 PopupMenu popup = new PopupMenu(Home.this, options_menu); 行。您只能从 Activity class Home 内部执行此操作。 PopupMenu class 构造函数 PopupMenu (Context context, View anchor) 需要传入上下文。当您从 Activity class Home 内部使用 PopupMenu popup = new PopupMenu(Home.this, options_menu); 时,Home.this 作为上下文,但从外部看不是。如果您想在此处创建 PopupMenu,则需要将上下文传递给 class