我试图把Image按钮放在另一个班级但是...我从未使用过课程,所以我不知道我在做什么。它说" Home"不是封闭的类。这是什么意思?我该如何防止这种情况?这也有助于将来使主要活动代码更容易在类中读取,而不是将它们全部放在一个文件中。
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();
}
});
}
}
答案 0 :(得分:1)
错误在行PopupMenu popup = new PopupMenu(Home.this, options_menu);
中。您只能在Activity class Home
内执行此操作。 PopupMenu
类构造函数PopupMenu (Context context, View anchor)
需要传入上下文。当您使用PopupMenu popup = new PopupMenu(Home.this, options_menu);
内的Activity class Home
时,Home.this
作为上下文传递但来自外部它不是。如果要在此处创建PopupMenu,则需要将上下文传递给您的类