家不是封闭的 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
我正在尝试将图像按钮放在另一个 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