【发布时间】:2014-05-06 08:18:50
【问题描述】:
我有我的 WebViewFragment,当然我想回到正在浏览的网站,但我遇到了错误:
onBackPressed() 方法没有为 Fragment 类型定义
为什么?我不明白吗? 我究竟做错了什么? 这是我正在使用的完整 webview 代码。
import android.app.Fragment;
import android.content.Intent;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.webkit.DownloadListener;
import android.webkit.WebChromeClient;
import android.webkit.WebView;
import android.webkit.WebViewClient;
public class WebViewFragment extends Fragment {
WebView webView;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Retrieving the currently selected item number
int position = getArguments().getInt("position");
String url = getArguments().getString("url");
// List of rivers
String[] menus = getResources().getStringArray(R.array.menus);
// Creating view corresponding to the fragment
View v = inflater.inflate(R.layout.fragment_layout, container, false);
// Updating the action bar title
getActivity().getActionBar().setTitle(menus[position]);
//Initializing and loading url in webview
webView = (WebView)v.findViewById(R.id.webView);
webView.getSettings().setJavaScriptEnabled(true);
webView.getSettings().setLoadsImagesAutomatically(true);
webView.getSettings().setBuiltInZoomControls(true);
webView.loadUrl(url);
webView.setWebChromeClient(new WebChromeClient());
webView.setWebViewClient(new WebViewClient(){
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url){
view.loadUrl(url);
return true;
}
});
webView.setDownloadListener(new DownloadListener() {
public void onDownloadStart(String url, String userAgent,
String contentDisposition, String mimetype,
long contentLength) {
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse(url));
startActivity(intent);
}
});
return v;
}
public void onBackPressed() {
if(webView.canGoBack()) {
webView.goBack();
} else {
super.onBackPressed();
}
}}
如果我正在使用:
public void onBackPressed() {
Fragment webview = getFragmentManager().findFragmentByTag("webview");
if (webview instanceof WebViewFragment) {
boolean goback = ((WebViewFragment)webview).canGoBack();
if (!goback)
super.onBackPressed();
}
}}
我有错误:
方法 canGoBack() 没有为 WebViewFragment 类型定义
onBackPressed() 方法没有为 Fragment 类型定义
感谢各位大侠的帮助!
【问题讨论】:
-
从webview你想切换到另一个屏幕..rght?
-
onBackPressed 是一种活动方法,而不是片段方法。看看这里stackoverflow.com/questions/10631425/…
-
假设我有 google.com,我正在搜索一些东西,在屏幕上我有搜索结果,但是我想回到 google.com。我想在站点中返回 1 步。我是android新手,所以也许我用错了什么?如果我使用 onKeyDown 代码,我会遇到同样的问题:
return super.onKeyDown(keyCode, event);谢谢 -
我试过
The method ...() is undefined for the type Fragment的所有问题 -
其实你不能直接在fragment里面做。 onBackPressed 可以在 FragmentActivity 中被覆盖。
标签: java android android-fragments webview back