2012-03-29 13 views
0

jQuery Mobileを使用して、モバイル対応のページバージョンを作成するCMSを実行するWebアプリケーションがあります。基本ログインページは電話機にローカルに保存されます。Android WebAppの強制終了ボタンが戻る

public class WebAppActivity extends Activity { 
WebView webView; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    this.getWindow().requestFeature(Window.FEATURE_PROGRESS); 
    this.requestWindowFeature(Window.FEATURE_NO_TITLE); 

    // Point to the content view defined in XML 

    setContentView(R.layout.main); 

    // Configure the webview setup in the xml layout 

    WebView webView = (WebView) findViewById(R.id.webView1); 

    WebSettings webSettings = webView.getSettings(); 

    // Yes, we want javascript, pls. 

    webSettings.setJavaScriptEnabled(true); 


    webView.loadUrl("file:///android_asset/www/webapp.html"); 



webView.setWebViewClient(new WebViewClient() { 
    @Override 
    public boolean shouldOverrideUrlLoading(WebView view, String url){ 
     view.loadUrl(url); 
     return true; 
    } 
}); 


} 



@Override 
public void onBackPressed() 
{ 
    if(webView.canGoBack()) 
    { 
     webView.goBack(); 
    }else{ 
     super.onBackPressed(); 
    } 
} 

}

とLogcatは言う:私は、過去一週間かそこらのためにこれを回避しようとしてきた

03-29 15:31:47.354: E/AndroidRuntime(430): FATAL EXCEPTION: main 
03-29 15:31:47.354: E/AndroidRuntime(430): java.lang.NullPointerException 
03-29 15:31:47.354: E/AndroidRuntime(430): at com.package.mobile.android.webapp.onBackPressed(WebApp.java:223) 
03-29 15:31:47.354: E/AndroidRuntime(430): at android.app.Activity.onKeyUp(Activity.java:1898) 
03-29 15:31:47.354: E/AndroidRuntime(430): at android.view.KeyEvent.dispatch(KeyEvent.java:1280) 
03-29 15:31:47.354: E/AndroidRuntime(430): at android.app.Activity.dispatchKeyEvent(Activity.java:2078) 
03-29 15:31:47.354: E/AndroidRuntime(430): at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchKeyEvent(PhoneWindow.java:1663) 
03-29 15:31:47.354: E/AndroidRuntime(430): at android.view.ViewRoot.deliverKeyEventToViewHierarchy(ViewRoot.java:2560) 
03-29 15:31:47.354: E/AndroidRuntime(430): at android.view.ViewRoot.handleFinishedEvent(ViewRoot.java:2535) 
03-29 15:31:47.354: E/AndroidRuntime(430): at android.view.ViewRoot.handleMessage(ViewRoot.java:1867) 
03-29 15:31:47.354: E/AndroidRuntime(430): at android.os.Handler.dispatchMessage(Handler.java:99) 
03-29 15:31:47.354: E/AndroidRuntime(430): at android.os.Looper.loop(Looper.java:123) 
03-29 15:31:47.354: E/AndroidRuntime(430): at android.app.ActivityThread.main(ActivityThread.java:3683) 
03-29 15:31:47.354: E/AndroidRuntime(430): at java.lang.reflect.Method.invokeNative(Native Method) 
03-29 15:31:47.354: E/AndroidRuntime(430): at java.lang.reflect.Method.invoke(Method.java:507) 
03-29 15:31:47.354: E/AndroidRuntime(430): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 
03-29 15:31:47.354: E/AndroidRuntime(430): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 
03-29 15:31:47.354: E/AndroidRuntime(430): at dalvik.system.NativeStart.main(Native Method) 

WebViewのではないかのように、それはそうですやり直す歴史を構築する。

答えて

1

webViewonCreateのローカル変数で、webViewのクラスメンバー変数が割り当てられていないため、NullPointerExceptionが原因です。

オフトピック:私は純粋にWebViewベースのアプリケーションについて長い間語っていませんが、それをしてはいけないと言いましょう。何らかの理由で絶対にやる必要がある場合は、オリエンテーションの変更を確実に処理する必要があります。

+0

私は知っている、私は個人的に別のアプローチをしたいと思ったが、私は却下された。 – user800360

0

あなたは戻るボタンのデフォルトの動作をオーバーライドする必要があり、これは、アプリケーションの主な活動に

 @Override 
public void onBackPressed() { 

    return; 
} 

によって達成される

1

これを試してみてください。

public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if ((keyCode == KeyEvent.KEYCODE_BACK) && webView.canGoBack()) { 
     webView.goBack(); 
     return true; 
    } 
    return super.onKeyDown(keyCode, event); 
} 
+0

上記のコードサンプルへのリンク[http://developer.android.com/resources/tutorials/views/hello-webview.html](http://developer.android.com/resources/tutorials/views/hello -webview.html) –

0

をバックボタンを押すだけで電話する必要があります

finish(); 
関連する問題