将 ViewPagerIndicator (viewpager) 与多个 webview 一起使用

发布于 2025-01-06 09:59:40 字数 4188 浏览 2 评论 0原文

我有这个(菜鸟?)问题,但我现在好几个小时都无法弄清楚。

我正在使用 ViewPagerIndicator (基于 ViewPager)。我需要 3 个页面,每个页面都包含一个具有特定 URL 的 Web 视图。

我怎样才能运行它?我所有的尝试都以一种情况结束,即我有 3 个页面加载了一个且相同的网址。我尝试了很多方法 - 但我对代码的理解似乎缺乏一些基础知识。

我的代码:

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 ) {}

}

I have this (noob?) question, but i just can't figure it out for many hours now.

I'm using ViewPagerIndicator (based on ViewPager). I need to have 3 pages, each of them containing a web view with specific URL..

How can I get this running? All my attempts end with a situaltion, when I have 3 pages with ONE and THE SAME url loaded. I tried many approaches - but my understanding of the code seems to lack some basics.

my code:

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

and the adapter:

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 ) {}

}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

甜`诱少女 2025-01-13 09:59:40

您的 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;

等等。

You have no break statements in your switch statement. As such, you're falling through all of your cases, recreating your content up to 3 times until you hit the bottom and you finally show the one with "http://www.google.pl". Add break like so:

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;

Etc.

酒与心事 2025-01-13 09:59:40

你的开关缺少中断。他们对所有案件都进行了级联直至最后一个案件。每完成一个之后你都需要休息一下。

You're missing breaks in your switch. They're cascading down to the last one on all cases. You need to break after each one.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文