Android WebView i obracanie ekranu

Odpowiedz Nowy wątek
2012-01-30 11:11
north
0

Witam serdecznie,
Mam taką aplikację:


package bf.menu;

import android.app.Activity;
import android.content.res.Configuration;
import android.os.Bundle;
import android.view.KeyEvent;
import android.webkit.WebView;
import android.webkit.WebViewClient;

public class MenuActivity extends Activity {
    WebView mWebView;
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        if (savedInstanceState != null)
            ((WebView)findViewById(R.id.webview)).restoreState(savedInstanceState);

        mWebView = (WebView) findViewById(R.id.webview);
        mWebView.getSettings().setJavaScriptEnabled(true); // włączenie JS
        mWebView.getSettings().setSupportZoom(false); // blokada ZOOMu

        mWebView.setWebViewClient(new MenuClient());
        if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT)
        {
            mWebView.loadUrl("http://www.onet.pl");
        }

        else if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE)
        {
            mWebView.loadUrl("http://wp.pl");
        }
    }
    private class MenuClient extends WebViewClient {
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            view.loadUrl(url);
            return true;
        }
    }
    protected void onSaveInstanceState(Bundle outState) {
        mWebView.saveState(outState);
     }

    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if ((keyCode == KeyEvent.KEYCODE_HOME || keyCode == KeyEvent.KEYCODE_BACK || keyCode == KeyEvent.KEYCODE_VOLUME_DOWN || keyCode == KeyEvent.KEYCODE_VOLUME_UP || keyCode == KeyEvent.KEYCODE_CALL || keyCode == KeyEvent.KEYCODE_POWER || keyCode == KeyEvent.KEYCODE_CAMERA || keyCode == KeyEvent.KEYCODE_CLEAR || keyCode == KeyEvent.KEYCODE_ENTER || keyCode == KeyEvent.KEYCODE_POWER)) {
            //mWebView.goBack();
            return false;
        }
        return super.onKeyDown(keyCode, event);
    }

    public void onUpdate(Bundle savedInstanceState) {
        if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT)
        {
            mWebView.loadUrl("http://www.onet.pl");
        }

        else if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE)
        {
            mWebView.loadUrl("http://wp.pl");
        }
    }    

}

Aplikacja powinna wyświetlić w zależności od aktualnego obrazu (poziomy/pionowy) odpowiednią stronę. Generalnie to działa,
ale w momencie gdy uruchamiam program poziomo - wyświetla wp, pionowo - onet... Ale to w momencie uruchomienia aplikacji.
Jeśli jednak w trakcie jej działania obrócę ekran, to nie zmienia z onetu na wp i odwrotnie... Wie ktoś może co robię nie tak?

Z góry dziękuje za pomoc,
Northwest

Pozostało 580 znaków

2012-01-30 15:07
0

A czy metoda onUpdate jest wywoływana w momencie obrotu? Poza tym czy na urządzeniu czy na emulatorze, bo z własnego doświadczenia wiem, że urządzenia mają czasami poważne problemy z odkryciem, że zmieniła się im orientacja.

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0