【发布时间】:2014-04-22 22:14:42
【问题描述】:
我创建了一个Fragment,其中包含一个WebView,我想定义一个onKeyDown() 以从一个网页返回到前一个网页。我做到了,但对我来说最奇怪的部分是将WebView 变量从我的Fragment 类共享到我的Activity 类,因为我无法在Fragment 中定义onKeyDown()。所以我只是定义了一个 get 方法并将其设为静态。但我想知道这是否是一个真正的错误,我的应用在某些情况下可能会严重崩溃。
我的Fragment 代码:
public class BrowserFragment extends Fragment {
private static WebView webView;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
public View onCreateView(LayoutInflater inflater, ViewGroup parent, Bundle savedInstanceState){
View v = inflater.inflate(R.layout.fragment_activity, parent, false);
getActivity().setTitle(R.string.title_rus);
webView = (WebView) v.findViewById(R.id.webView);
webView.setWebViewClient(new SwingBrowserClient());
WebSettings webSettings = webView.getSettings();
webSettings.setJavaScriptEnabled(true);
Uri data = Uri.parse("http://www.swinginmoscow.ru/m/");
webView.loadUrl(data.toString());
return v;
}
public static WebView getWebView() {
return webView;
}
}
还有我的Activity 代码:
public class MainBrowserActivity extends SingleFragmentActivity {
@Override
protected Fragment createFragment() {
return new BrowserFragment();
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if ((keyCode == KeyEvent.KEYCODE_BACK) && BrowserFragment.getWebView().canGoBack()) {
BrowserFragment.getWebView().goBack();
return true;
}
return super.onKeyDown(keyCode, event);
}
}
【问题讨论】:
标签: android android-fragments webview