2015-12-08 2 views
1

Я пытаюсь показать WebView в Android ViewPager с использованием кода от Chinese blog.Отображение WebView в ViewPager

public class PagerActivity extends Activity { 

private ViewPager vpArticle; 
private MyPagerAdapter myAdapter; 
private List<View> mListViews; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    requestWindowFeature(Window.FEATURE_NO_TITLE); 
    setContentView(R.layout.pager); 

    myAdapter = new MyPagerAdapter(); 
    vpArticle = (ViewPager) findViewById(R.id.viewpager); 
    vpArticle.setAdapter(myAdapter); 

    mListViews = new ArrayList<View>(); 
    addView(mListViews, "file:///android_asset/jan.html"); 
    addView(mListViews, "file:///android_asset/feb.html"); 
} 

private void addView(List<View> viewList,String url) 
{ 
    WebView webView=new WebView(this); 
    webView.loadUrl(url); 
    viewList.add(webView); 
} 

private class MyPagerAdapter extends PagerAdapter { 

    @Override 
    public void destroyItem(View arg0, int arg1, Object arg2) { 
     Log.d("k", "destroyItem"); 
     ((ViewPager) arg0).removeView(mListViews.get(arg1)); 
    } 

    @Override 
    public void finishUpdate(View arg0) { 
     Log.d("k", "finishUpdate"); 
    } 

    @Override 
    public int getCount() { 
     Log.d("k", "getCount"); 
     return mListViews.size(); 
    } 

    @Override 
    public Object instantiateItem(View arg0, int arg1) { 
     Log.d("k", "instantiateItem"); 
     ((ViewPager) arg0).addView(mListViews.get(arg1), 0); 
     return mListViews.get(arg1); 
    } 

    @Override 
    public boolean isViewFromObject(View arg0, Object arg1) { 
     Log.d("k", "isViewFromObject"); 
     return arg0 == (arg1); 
    } 

Однако, когда я пытаюсь запустить его, у меня возникла ошибка NullPointerException.

12-08 19:44:48.093 4968-4968/? E/AndroidRuntime: Caused by: java.lang.NullPointerException 
12-08 19:44:48.093 4968-4968/? E/AndroidRuntime:  at .PagerActivity$MyPagerAdapter.getCount(PagerActivity.java:61) 
12-08 19:44:48.093 4968-4968/? E/AndroidRuntime:  at android.support.v4.view.ViewPager.setAdapter(ViewPager.java:439) 
12-08 19:44:48.093 4968-4968/? E/AndroidRuntime:  at .PagerActivity.onCreate(PagerActivity.java:30) 

линия 61 является return mListViews.size(); и линия 30 является vpArticle.setAdapter(myAdapter);

Существуют ли какие-либо шаги, которые я пропустил? Я участвую в разработке Android, и мое умение ограничено.

ответ

3

Move

vpArticle.setAdapter(myAdapter); 

после

mListViews = new ArrayList<View>(); 
addView(mListViews, "file:///android_asset/jan.html"); 
addView(mListViews, "file:///android_asset/feb.html"); 

Вы получили NPE потому mListViews ==null на return mListViews.size();

+1

Спасибо. Это работает! – user2872856

+0

@ user2872856 Cool budy !!! Добро пожаловать !!! –

Смежные вопросы