Android WebView中的SherlockFragment错误
尝试使用选项卡式布局在SherlockFragment中创建WebView,但出现错误。以前有工作代码,但尝试更改为onKeyDown现在可以工作,但出现错误。谢谢大家。任何帮助都会很棒。谢谢 Java代码:Android WebView中的SherlockFragment错误,android,webview,actionbarsherlock,android-webview,Android,Webview,Actionbarsherlock,Android Webview,尝试使用选项卡式布局在SherlockFragment中创建WebView,但出现错误。以前有工作代码,但尝试更改为onKeyDown现在可以工作,但出现错误。谢谢大家。任何帮助都会很棒。谢谢 Java代码: WebView myWebView; public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { return infl
WebView myWebView;
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment_4, container, false);
}
String mURL = "https://www.facebook.com";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.v("DetailFragment", "onCreate()");
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
Log.v("DetailFragment", "onActivityCreated()");
if (savedInstanceState != null) {
mURL = savedInstanceState.getString("currentURL", "");
}
if (!mURL.trim().equalsIgnoreCase("")) {
myWebView = (WebView) getView().findViewById(R.id.webView);
myWebView.loadUrl(mURL.trim());
myWebView.setWebViewClient(new WebViewClient());
myWebView.getSettings().setBuiltInZoomControls(true);
myWebView.getSettings().setSupportZoom(true);
myWebView.getSettings().setUseWideViewPort(true);
myWebView.getSettings().setLoadWithOverviewMode(true);
getView().setOnKeyListener( new OnKeyListener()
{
@Override
public boolean onKey( View v, int keyCode, KeyEvent event ) {
return myOnKeyDown(keyCode);
}
} );
}
}
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putString("currentURL", mURL);
}
public void setURLContent(String URL) {
mURL = URL;
}
public void updateURLContent(String URL) {
mURL = URL;
myWebView.getSettings().setJavaScriptEnabled(true);
myWebView.loadUrl(mURL.trim());
myWebView.setWebViewClient(new WebViewClient());
myWebView.getSettings().setBuiltInZoomControls(true);
myWebView.getSettings().setSupportZoom(true);
myWebView.getSettings().setUseWideViewPort(true);
myWebView.getSettings().setLoadWithOverviewMode(true);
}
public class WebAppInterface {
Context mContext;
/** Instantiate the interface and set the context */
WebAppInterface(Context fragment_4) {
mContext = fragment_4;
}
/** Show a toast from the web page */
@JavascriptInterface
public void showToast(String toast) {
Toast.makeText(mContext, toast, Toast.LENGTH_SHORT).show();
}
private class MyWebViewClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if (Uri.parse(url).getHost().equals("https://www.facebook.com")) {
// This is my web site, so do not override; let my WebView
// load the page
return false;
}
return false;
}
}
public boolean myOnKeyDown(int key_code) {
if ((key_code == KeyEvent.KEYCODE_BACK)
&& myWebView.canGoBack()) {
myWebView.goBack();
return true;
}
return false;
}
}
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.fragment_4, menu);
return;
}
}
XML:
类memember
myWebView
从未初始化。内部OnActivity创建的do:
if (!mURL.trim().equalsIgnoreCase("")) {
myWebView = (WebView) getView().findViewById(R.id.webviewId);
myWebView.loadUrl(mURL.trim());
myWebView.setWebViewClient(new WebViewClient());
myWebView.getSettings().setBuiltInZoomControls(true);
myWebView.getSettings().setSupportZoom(true);
myWebView.getSettings().setUseWideViewPort(true);
myWebView.getSettings().setLoadWithOverviewMode(true);
}
编辑:
改变
myWebView = (WebView) getView().findViewById(R.id.fragment_4);
与
编辑2:已创建内部OnActivity
getView().setOnKeyListener( new OnKeyListener()
{
@Override
public boolean onKey( View v, int keyCode, KeyEvent event ) {
return myOnKeyDown(keyCode);
}
} );
public boolean myOnKeyDown(int key_code) {
if ((key_code == KeyEvent.KEYCODE_BACK)
&& myWebView.canGoBack()) {
myWebView.goBack();
return false;
}
return true;
}
}
那么我该如何解决这个问题呢?当然webviewId必须是你放在布局中的webview的id现在出现错误,我会发帖询问你是否添加了我在回答中告诉你的字符串?发布对代码和布局所做的更改MyWebView=(WebView)getView().findViewById(R.id.webviewId);
myWebView = (WebView) getView().findViewById(R.id.fragment_4);
myWebView = (WebView) getView().findViewById(R.id.webView);
getView().setOnKeyListener( new OnKeyListener()
{
@Override
public boolean onKey( View v, int keyCode, KeyEvent event ) {
return myOnKeyDown(keyCode);
}
} );
public boolean myOnKeyDown(int key_code) {
if ((key_code == KeyEvent.KEYCODE_BACK)
&& myWebView.canGoBack()) {
myWebView.goBack();
return false;
}
return true;
}
}