Как мне справиться с закрытием WebView, который открылся в Activity Android? - PullRequest
0 голосов
/ 05 февраля 2012

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

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
          android:orientation="vertical"  
          android:layout_width="fill_parent"  
          android:layout_height="fill_parent" android:theme="@android:style/Theme.Dialog"> 

<WebView android:id="@+id/BrowserView"  
         android:layout_width="fill_parent"  
         android:layout_height="fill_parent"                
         android:scaleType="fitXY" />               

вот код, который я вызываю для WebView

listView.setOnItemClickListener(new OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> adapter, View view, int position, long arg) {
            setContentView(R.layout.external_view);

            // load url or html
            RssItem listItem = (RssItem) listView.getItemAtPosition(position);
            webView = (WebView) findViewById(R.id.BrowserView);

            // set browser settings
            webView.setWebViewClient(new ExternalWebViewClient());
            webView.getSettings().setJavaScriptEnabled(true);
            webView.getSettings().setBuiltInZoomControls(true);
            webView.getSettings().setUseWideViewPort(true);
            webView.getSettings().setPluginsEnabled(true);
            webView.getSettings().setJavaScriptCanOpenWindowsAutomatically(false);
            webView.setInitialScale(1);

            try {
                webView.loadUrl(listItem.getExternalUrl());
            } catch (Exception ex) {
                Log.d("WEBVIEW", ex.getMessage());
            }
        }
    });

Вот класс "ExternalWebViewClient"

public class ExternalWebViewClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
    view.loadUrl(url);
    return true;
}

@Override
public void onPageFinished(WebView view, String url) {
    view.clearHistory();
}

}

Теперь вопрос:

Как мне закрыть его и остаться в том же упражнении после нажатия кнопки «назад», вот мой код обработки кнопки возврата:

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (event.getAction() == KeyEvent.ACTION_DOWN) {
        switch (keyCode) {
        case KeyEvent.KEYCODE_BACK:
            if (webView.canGoBack() == true) {
                webView.goBack();
            } else {
                //what should i do here?????????????????                    
                return true;
            }
        }
    }
    return false;
}

1 Ответ

1 голос
/ 05 февраля 2012

По сути, вам не нужно обрабатывать кнопку «Назад» самостоятельно.Если вы находитесь в WebView и нажимаете Назад - по умолчанию вы перейдете к последнему виду деятельности.

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