Utilizzando ViewPagerIndicator (viewpager) con s WebView multipla'
-
26-10-2019 - |
Domanda
Ho questo (niubbo?) Domanda, ma io proprio non riesco a capire per molte ore ormai.
Sto usando ViewPagerIndicator (sulla base di ViewPager). Ho bisogno di avere 3 pagine, ognuna delle quali contiene una vista web con URL specifico ..
Come posso ottenere questo correre? Tutti i miei tentativi di terminare con un situaltion, quando ho 3 pagine con uno e lo stesso URL caricato. Ho provato molti approcci - ma la mia comprensione del codice sembra mancare di alcuni principi fondamentali
.il mio codice:
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 );}
e l'adattatore:
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 ) {}
}
Soluzione
Non ci sono dichiarazioni break
nell'istruzione switch
. Come tale, stai cadendo attraverso tutte le casi, ricreando sul suo sito web fino a 3 volte fino a colpire il fondo e vi mostrerà infine quello con "http://www.google.pl". Aggiungere break
in questo modo:
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.
Altri suggerimenti
Ti manca interruzioni nel vostro interruttore. Stanno a cascata fino all'ultimo uno su tutti i casi. È necessario rompere dopo ciascuno di essi.