私のアプリケーションは、その中にwebViewを含むフラグメントをロードしますが、戻るボタンを押してください。 Webがnullであると言ってクラッシュします。どうしてか分かりません。助けてください。私はあなたのmWebView
がWebViewFragment.java
内で定義され、MainActivity.java
でmWebView
が異なるオブジェクトであり、値がnullであるWebViewFragmentヌルオブジェクトリファレンスで仮想メソッド 'boolean android.webkit.WebView.canGoBack()'を呼び出そうとしました
MainActivity
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.webkit.WebView;
public class MainActivity extends FragmentActivity {
WebView mWebView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
WebViewFragment webViewFragment = new WebViewFragment();
fragmentTransaction.replace(R.id.mainFragment, webViewFragment);
fragmentTransaction.commit();
}
@Override
public void onBackPressed() {
if(mWebView.canGoBack()) {
mWebView.goBack();
}
else
{
super.onBackPressed();
}
}
}
WebViewFragment
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
public class WebViewFragment extends Fragment {
private WebView mWebView;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_main, container, false);
mWebView = (WebView) view.findViewById(R.id.webView);
WebSettings webSettings = mWebView.getSettings();
webSettings.setJavaScriptEnabled(true);
mWebView.loadUrl("https://www.google.co.uk/");
mWebView.setWebViewClient(new WebViewClient());
return view;
}
}