Анимация с флиппером для просмотра веб-просмотров - PullRequest
1 голос
/ 23 ноября 2011

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

Это код с макетом, он хорошо работает:

   vf = (ViewFlipper) findViewById(R.id.details);
   LayoutInflater vi = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
   int layouts[] = new int[] {R.layout.layout_page1, R.layout.layout_page2, R.layout.layout_page3};

    for (int i=0; i<layouts.length; i++) {
        View vw = vi.inflate(layouts[i], null);     
        vf.addView(vw);
    }

а вот код с WebView не работает:

    vf = (ViewFlipper) findViewById(R.id.details);
    WebView MyWebView[] =new WebView[2];

    MyWebView[0] = (WebView) findViewById(R.id.mproof);
    MyWebView[0].setWebViewClient(new WebViewClient());
    MyWebView[0].getSettings().setJavaScriptEnabled(true);
    MyWebView[0].loadUrl("http://www.google.com");

    MyWebView[1] = (WebView) findViewById(R.id.example);
    MyWebView[1].setWebViewClient(new WebViewClient());
    MyWebView[1].getSettings().setJavaScriptEnabled(true);
    WebView[1].loadUrl("http://www.hotmail.com");  

    LayoutInflater vi = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    //int layouts[] = new int[] {R.layout.layout_page1, R.layout.layout_page2, R.layout.layout_page3};

    for (int i=0; i<2; i++) {
        vf.addView(MyWebView[i]);
    }

Остановка отладчика сразу после "vf.addView(MyWebView[i]);"

1 Ответ

1 голос
/ 23 ноября 2011

Добавление двух веб-просмотров из одного и того же макета XML в флиппер представления может вызвать некоторые проблемы.

В первом примере, который вы дали, вы накачиваете представления из отдельных файлов макетов, во втором примере вы используете findViewById () для получения представлений, то есть они находятся в одном и том же макете XML. Проблема, скорее всего, в том, что у двух веб-просмотров уже есть родитель.

Поместите веб-представление в его собственный макет и надуйте его.

LayoutInflater vi = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
MyWebView[0] = (WebView)vi.inflate(R.layout.webview,null);
MyWebView[1] = (WebView)vi.inflate(R.layout.webview,null);

for (int i=0; i<2; i++) {
    vf.addView(MyWebView[i]);
}

EDIT Даже принимая во внимание ваш XML-файл, проблема в том же, что у двух веб-просмотров уже есть родитель. Это ViewFlipper, затем вы пытаетесь добавить их снова в ViewFlipper в цикле for.

Удаление этого должно исправить вашу проблему:

for (int i=0; i<2; i++) {
    vf.addView(MyWebView[i]);
}

Или используйте первое решение с отдельным XML-файлом для веб-просмотра.

...