2012-02-16 60 views
0

我有这个(noob?)的问题,但我现在无法弄清楚了好几个小时。使用ViewPagerIndicator(viewpager)与多个webview的

我使用ViewPagerIndicator(基于ViewPager)。我需要有3页,其中每个页面都包含具有特定网址的网页视图。

我怎样才能让这个运行?我所有的尝试都以静态结束,当我有3页加载了ONE和THE SAME网址时。我尝试了很多方法 - 但我对代码的理解似乎缺乏一些基础知识。

我的代码:

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

}

回答

1

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

等等

+0

谢谢,谢谢,谢谢。我讨厌这样的错误,因此我失去了几小时,呃! – 2012-02-16 14:26:49

+0

太棒了。你能接受我们的答案吗? – 2012-02-16 14:29:22

+0

当然,我只是不知道它是如何工作的;) – 2012-02-16 14:49:15

1

你错过了休息。在所有情况下,它们都被降级到最后一个。你需要在每一个之后打破。

+0

如上,谢谢! – 2012-02-16 14:27:56