2015-03-02 3 views
1

Когда я переопределяю функцию public Object instantiateItem от MainAdapter extends PagerAdapter, по строке container.addView(, он падает. Я получаю журналКак программно добавлять представления в ViewContainer?

java.lang.IllegalArgumentException: Cannot add a null child view to a ViewGroup 
     at android.view.ViewGroup.addViewInLayout(ViewGroup.java:3909) 
     at android.view.ViewGroup.addViewInLayout(ViewGroup.java:3890) 
     at android.support.v4.view.ViewPager.addView(ViewPager.java:1302) 
     at android.view.ViewGroup.addView(ViewGroup.java:3744) 
     at com.jfeinstein.jazzyviewpager.JazzyViewPager.addView(JazzyViewPager.java:127) 
     at com.ycg.bottommenuslidegradientswipe.MainActivity$MainAdapter.instantiateItem(MainActivity.java:260) 

Мой код функции instanstiateItem приведен ниже. Класс TaskCompletedView расширяет View

@Override 
public Object instantiateItem(ViewGroup container, final int position) { 
    TasksCompletedView mTasksView = (TasksCompletedView) findViewById(R.id.tasks_view); 
    container.addView(mTasksView, LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT); 
    jazzyPager.setObjectForPosition(mTasksView,position); 

    new Thread(new ProgressRunable()).start(); 
    return mTasksView; 
    } 

ответ

0

Это произойдет потому, что вы установили нулевую переменную. mTasksView == null; Вам нужно указать не нулевой вид, например:

container.addView(new ImageView(context), LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT); 
+0

Я не знаю, где обновить код. Я использовал строку 'findViewById (R.id.tasks_view);' для инициализации mTaskView. 'MTaskView', класс' TaskCompletedView' расширяет 'View'. –

+0

@PeterZhu Итак, findViewById возвращает null, потому что представление с этим идентификатором не найдено. Пожалуйста, удовлетворитесь правильной инициализацией. – smail2133

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