Использование ViewPagerIndicator (viewpager) с несколькими веб-представлениями - PullRequest
0 голосов
/ 16 февраля 2012

У меня есть этот (нуб?) Вопрос, но я просто не могу понять это в течение многих часов.

Я использую ViewPagerIndicator (на основе ViewPager). Мне нужно иметь 3 страницы, каждая из которых содержит веб-представление с определенным URL-адресом.

Как мне это запустить? Все мои попытки заканчиваются ситуацией, когда у меня есть 3 страницы с ОДНОЙ и ОДИН И ТО ЖЕ URL. Я перепробовал много подходов - но в моем понимании кода, похоже, нет основ.

мой код:

public class WebPagerProfileActivity extends Activity {

private ViewPager awesomePager;
private static int NUM_AWESOME_VIEWS = 3;
private Context context;
private ViewPagerAdapter awesomeAdapter;
LayoutInflater inflater ;



/** Called when the activity is first created. */

@Override

public void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.webpagerprofile);
context = this;

inflater = (LayoutInflater)
        context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

awesomeAdapter = new ViewPagerAdapter(context);
awesomePager = (ViewPager) findViewById(R.id.viewpager);
TitlePageIndicator indicator = (TitlePageIndicator)findViewById( R.id.indicator );

awesomePager.setAdapter(awesomeAdapter);
indicator.setViewPager( awesomePager );}

и адаптер:

public class ViewPagerAdapter extends PagerAdapter implements TitleProvider

{ private static String[] titles = new String[]
{
    "Profile",
    "Friends",
    "Statistics"
};
private final Context context;

public ViewPagerAdapter( Context context )
{
    this.context = context;
}

//@Override
public String getTitle( int position )
{
    return titles[position];
}

@Override
public int getCount()
{
    return titles.length;
}

@Override
public Object instantiateItem( View pager, int position )
{
    View layout = null; 


    switch (position) {
    case 0: {
        LayoutInflater mInflater =  (LayoutInflater)
                context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    layout  = mInflater.inflate(R.layout.webprofile, null);

    WebView mainContent = (WebView)layout.findViewById(R.id.webview);
    mainContent.getSettings().setJavaScriptEnabled(true);
    mainContent.getSettings().setJavaScriptEnabled(true);
    mainContent.getSettings().setBuiltInZoomControls(true);
    mainContent.requestFocusFromTouch();
    mainContent.setWebViewClient(new WebViewClient());
    mainContent.setWebChromeClient(new WebChromeClient());
    mainContent.loadUrl("http://www.wp.pl");
    }

    case 1: {        LayoutInflater mInflater =  (LayoutInflater)
            context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    layout  = mInflater.inflate(R.layout.webfriends, null);

    WebView mainContent = (WebView)layout.findViewById(R.id.webviewfriends);
    mainContent.getSettings().setJavaScriptEnabled(true);
    mainContent.getSettings().setJavaScriptEnabled(true);
    mainContent.getSettings().setBuiltInZoomControls(true);
    mainContent.requestFocusFromTouch();
    mainContent.setWebViewClient(new WebViewClient());
    mainContent.setWebChromeClient(new WebChromeClient());
    mainContent.loadUrl("http://www.onet.pl");
    }

    case 2: {        LayoutInflater mInflater =  (LayoutInflater)
            context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    layout  = mInflater.inflate(R.layout.webstatistics, null);

    WebView mainContent = (WebView)layout.findViewById(R.id.webviewstatistics);
    mainContent.getSettings().setJavaScriptEnabled(true);
    mainContent.getSettings().setJavaScriptEnabled(true);
    mainContent.getSettings().setBuiltInZoomControls(true);
    mainContent.requestFocusFromTouch();
    mainContent.setWebViewClient(new WebViewClient());
    mainContent.setWebChromeClient(new WebChromeClient());
    mainContent.loadUrl("http://www.google.pl");
    }

    }

    ((ViewPager) pager).addView((View)layout,0);

    return layout;
}

@Override
public void destroyItem( View pager, int position, Object view )
{
    //((ViewPager)pager).removeView( (WebView)view );
}

@Override
public boolean isViewFromObject( View view, Object object )
{
    return view.equals( object );
}

@Override
public void finishUpdate( View view ) {}

@Override
public void restoreState( Parcelable p, ClassLoader c ) {}

@Override
public Parcelable saveState() {
    return null;
}

@Override
public void startUpdate( View view ) {}

}

Ответы [ 2 ]

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

В вашем заявлении switch нет операторов break. Таким образом, вы проваливаете все свои дела, воссоздаете свой контент до 3 раз, пока не достигнете дна, и, наконец, не покажете тот, у которого "http://www.google.pl". Добавить break примерно так:

switch (position) {
case 0: {
    LayoutInflater mInflater =  (LayoutInflater)
            context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    layout  = mInflater.inflate(R.layout.webprofile, null);

    WebView mainContent = (WebView)layout.findViewById(R.id.webview);
    mainContent.getSettings().setJavaScriptEnabled(true);
    mainContent.getSettings().setJavaScriptEnabled(true);
    mainContent.getSettings().setBuiltInZoomControls(true);
    mainContent.requestFocusFromTouch();
    mainContent.setWebViewClient(new WebViewClient());
    mainContent.setWebChromeClient(new WebChromeClient());
    mainContent.loadUrl("http://www.wp.pl");
}
break;

1008 * Etc. *

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

Вам не хватает перерывов в коммутаторе. Они идут вниз до последнего во всех случаях. Вам нужно разбивать после каждого.

...