【发布时间】:2018-01-06 15:17:48
【问题描述】:
我正在尝试将 options_menu 的 onClickListener 实现到另一个类,但我无法弄清楚如何做到这一点,目前代码中有两个我无法弄清楚的错误。第一个是
public class OptionsMenu implements View.OnClickListener{
第二个是
PopupMenu popup = new PopupMenu(OptionsMenu.this, options_menu);
我试图四处搜索有关此问题的修复程序,但我找不到一个或任何与那里的代码有类似问题的人。我要做的就是清理 Home.Java,这样那里的代码就更少了。这也是我第一次尝试使用另一个课程,所以如果我能通过这个课程会有很大帮助,这样我就可以开始一个新课程了?
Home.Java
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.KeyEvent;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.view.inputmethod.EditorInfo;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.PopupMenu;
import android.widget.TextView;
import android.widget.TextView.OnEditorActionListener;
public class Home extends AppCompatActivity {
private ImageButton options_menu;
private WebView webView;
private EditText search_bar;
private int on = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_home);
webView = (WebView)findViewById(R.id.webView);
options_menu.findViewById(R.id.options_menu);
//Open in Equinox instead of Deafult Browser
webView.setWebViewClient(new
WebViewClient());
//WebView - JavaScript-WebViewSettings-HomePage
final WebSettings webSettings = webView.getSettings();
webSettings.setJavaScriptEnabled(true);
webView.getSettings().setSupportZoom(true);
webView.loadUrl("https://www.Google.ca");
//options button toolbar
options_menu = (ImageButton) findViewById(R.id.options_menu);
options_menu.findViewById(R.id.options_menu);
options_menu.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
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();
}
});
// settings for keyboard
search_bar = (EditText)findViewById(R.id.search_bar);
search_bar.setOnEditorActionListener(new OnEditorActionListener(){
@Override
public boolean onEditorAction(TextView arg0, int arg1, KeyEvent arg2) {
if(arg1 == EditorInfo.IME_ACTION_GO)
{
if (search_bar.getText().toString().contains(".com")) {
webView.loadUrl("https://".concat(search_bar.getText().toString()));
} else {
webView.loadUrl("https://www.google.ca/search?q=".concat(search_bar.getText().toString()));
}
}
return false;
}
});
search_bar.requestFocus();
search_bar.setFocusableInTouchMode(true);
}
// Animation of search_bar
public void edit_clicked(View view) {
EditText search_bar = (EditText) findViewById(R.id.search_bar);
Animation anim = AnimationUtils.loadAnimation(Home.this, R.anim.edittext_scale);
search_bar.startAnimation(anim);
}
//Hard Back Button
public void onBackPressed(){
if (webView.canGoBack()){
webView.goBack();
}
else{
webView.reload();
}
}
}
OptionsMenu.Java
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.webkit.WebView;
import android.widget.ImageButton;
import android.widget.PopupMenu;
/**
* Created on 2018-01-05.
*/
public class OptionsMenu implements View.OnClickListener{
public ImageButton options_menu;
public WebView webView;
public void onclick (View view){
options_menu.findViewById(R.id.options_menu);
options_menu.setOnClickListener(new OnClickListener() {
public void onClick (View view){
PopupMenu popup = new PopupMenu(OptionsMenu.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(OptionsMenu.this, options_menu);您应该将活动上下文作为 Popmenu 的第一个参数而不是 Optionmenu.class 传递,后者只是一个类。所以应该是 PopupMenu popup = new PopupMenu(activty, options_menu);
-
活动导致它仍然有错误
-
你如何通过活动?
-
老实说,这就是为什么我需要课程帮助,因为我不知道......
-
在活动 OptionsMenu optionsMenu = OptionsMenu(activity.this, options_menu, webview) 中创建如下选项菜单
标签: java android class onclick listener