7
7

More than 5 years have passed since last update.

onBackPressedで呼び出したWebViewがnullの場合

Posted at

onBackPressed内でwebviewがnullで返ってきてしまうエラーに直面しました。
class直下のfieldで定義していたのにも関わらず起こったので解決に時間がかかりました。
以下のコードがエラーを引き起こしていた時のものです。

public class OpenApp extends Activity {

WebView webview;

@Override
protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.openapp);
  WebView webview = (WebView) findViewById(R.id.wvOpenApp1);
  webview.loadUrl("適当なURL");
}

@Override
public void onBackPressed(){
     if(webview.canGoBack()){
          webview.goBack();
      }else{
          moveTaskToBack(true);
      }
    return;
  }
}

fieldでwebviewを定義し、onCreate内で指定しているので、どのmethodでも機能するだろうと思っていましたが、onBackPressed内ではnullで返ってきます。

原因はonCreate内の”WebView”の部分。フィールドで定義しているのでonCreate内でもう一度WebViewと定義する必要はありません。トリッキーだったのはこの様にしてもonCreate内のwebviewは機能するということです。

こちらを消してもう一度テストしてみると今度はうまくgoback()が機能しました。

超初歩的なミスですが、盲点でしたのでどなたかの参考までに。

7
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
7