Android WebApp Force закрывается на кнопку назад - PullRequest
0 голосов
/ 29 марта 2012

У меня есть веб-приложение, которое я создаю для запуска CMS, использующей jQuery Mobile для создания мобильных совместимых версий страниц. Страница базового журнала хранится локально на телефоне.

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();
    }
}

}

и Логкат говорит:

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)

Я пытался обойти это в течение прошлой недели или около того, кажется, что веб-просмотр не строит историю, чтобы вернуться назад.

Ответы [ 4 ]

1 голос
/ 29 марта 2012

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * NullPointerException. * * * * * * * * * * * * * * *

Не по теме: Я не буду вдаваться в длинную тираду о приложениях, основанных исключительно на WebView, но давайте просто скажем, что вы не должны этого делать. И если вам по той или иной причине абсолютно необходимо, то вам следует обязательно обрабатывать изменения ориентации.

1 голос
/ 29 марта 2012

попробуйте это:

public boolean onKeyDown(int keyCode, KeyEvent event) {  
    if ((keyCode == KeyEvent.KEYCODE_BACK) && webView.canGoBack()) {  
        webView.goBack();  
        return true;  
    }  
    return super.onKeyDown(keyCode, event);  
}  
0 голосов
/ 29 марта 2012

при нажатии кнопки возврата вы должны позвонить на

finish();
0 голосов
/ 29 марта 2012

вам нужно переопределить поведение кнопки по умолчанию, это достигается

       @Override
public void onBackPressed() {

    return;
}

в основной активности вашего приложения

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...