【问题标题】:Implement back button on android fragment webview在android片段webview上实现后退按钮
【发布时间】:2015-02-21 01:48:55
【问题描述】:

我想为我的 webview 片段实现后退按钮,在 stackoverflow 上尝试了不同的答案,但无法让它与我的代码一起使用。

下面是我的代码。

public class LoginFragment extends Fragment {

    public LoginFragment(){}

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {

        View rootView = inflater.inflate(R.layout.fragment_login, container, false);

        WebView webView = (WebView) rootView.findViewById(R.id.webView);
        webView.getSettings().setJavaScriptEnabled(true);
        webView.setWebViewClient(new WebViewClient());
        webView.loadUrl("http://example.com/");

        return rootView;
    }
}

我什至尝试过,在 developer.android.com 上找到了它

public boolean WebViewGoBack() {
    if(webView.canGoBack()){
       webView.goBack();
       return true;
    }
    return false; 
}

感谢您的帮助。

【问题讨论】:

标签: android android-fragments webview


【解决方案1】:

试试这个:

@Override
public void onBackPressed() { 
    if (webView.canGoBack()) { //Gets whether this WebView has a back history item.
        webView.goBack(); //this takes to the previous page
    } else { 
        super.onBackPressed();// it finishes the current activity
    }
}

【讨论】:

  • 能否请edit 解释一下这段代码为什么/如何回答这个问题?不鼓励仅使用代码的答案,因为它们不像带有解释的代码那样容易学习。如果没有解释,就需要花费更多的时间和精力来理解正在做什么,或者对代码所做的更改。对于试图从答案中学习的人以及评估答案以查看答案是否有效或是否值得投票的人来说,解释都很重要。
【解决方案2】:
public class LoginFragment extends Fragment {

public LoginFragment(){}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {

    View rootView = inflater.inflate(R.layout.fragment_login, container, false);

    WebView webView = (WebView) rootView.findViewById(R.id.webView);
    webView.getSettings().setJavaScriptEnabled(true);
    webView.setWebViewClient(new WebViewClient());
    webView.loadUrl("http://example.com/");

    webView.setOnKeyListener(new OnKeyListener(){

        public boolean onKey(View v, int keyCode, KeyEvent event) {
              if ((keyCode == KeyEvent.KEYCODE_BACK) && webView.canGoBack()) {
                    handler.sendEmptyMessage(1);
                    return true;
                }
                return false;
        }
    });
    return rootView; 
}       
}
}

【讨论】:

  • 应该是什么处理程序??
  • 类似这样的东西:“private Handler handler = new Handler(){ @Override public void handleMessage(Message message) { switch (message.what) { case 1:{ webViewGoBack(); }break; } } };"
猜你喜欢
  • 2013-09-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多