2015-10-11 6 views
0

Я пытаюсь использовать MaterialViewPager library. Каждый раз, когда я запускаю свое приложение, я получаю следующее исключение. Ссылка на мой собственный код отсутствует.Android - исключение из памяти при создании представления

Бросив OutOfMemoryError "Не удалось не выделить 6586008 байт распределение с 4194304 свободных байтов и 4Мб до ООМ" отчетности

Ошибка аварии

в java.lang.AbstractStringBuilder.enlargeBuffer (AbstractStringBuilder.java: 95) в java.lang.AbstractStringBuilder.append0 (AbstractStringBuilder.java:125) ....

М отладки терли я узнал, что мой код останавливается на следующие строках (OverviewPagerFragment - полный код см ниже)

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    Log.d("Pager", "onCreateView"); 
    View view = inflater.inflate(R.layout.fragment_overview_pager, container, true); 
    ButterKnife.bind(this, view); 
    return view; 
} 

Для вашей помощи здесь мой полный код моего «OverviewActivity». Первое действие просто заменит FrameLayout на «OverviewFragment». Это довольно тот же код, как пример кода библиотеки, но я не знаю, исключение бросает ...

public class OverviewFragment extends BaseFragment<OverviewView, OverviewPresenter> { 

    @Bind(R.id.material_view_pager) 
    MaterialViewPager materialViewPager; 

    @Override 
    public int getLayoutId() { 
     return R.layout.fragment_overview; 
    } 

    @Override 
    public void onActivityCreated(Bundle savedInstanceState) { 
     super.onActivityCreated(savedInstanceState); 
     Log.d("OverviewFragment", "onActivityCreated"); 
     materialViewPager.getViewPager().setAdapter(new FragmentStatePagerAdapter(getFragmentManager()) { 
      @Override 
      public Fragment getItem(int position) { 
       Log.d("OverviewFragment", "getItem"); 
       return new OverviewPagerFragment(); 
      } 

      @Override 
      public int getCount() { 
       Log.d("OverviewFragment", "getCount"); 
       return 4; 
      } 

      @Override 
      public CharSequence getPageTitle(int position) { 
       Log.d("OverviewFragment", "getPageTitle"); 
       switch (position % 4) { 
        case 0: 
         return "Eins"; 
        case 1: 
         return "Zwei"; 
        case 2: 
         return "Drei"; 
        case 3: 
         return "Vier"; 
       } 

       return ""; 
      } 
     }); 

     materialViewPager.getViewPager() 
       .setOffscreenPageLimit(materialViewPager.getViewPager().getAdapter().getCount()); 
     materialViewPager.getPagerTitleStrip().setViewPager(materialViewPager.getViewPager()); 
    } 
} 



public class OverviewPagerFragment extends Fragment { 

    RecyclerView.Adapter adapter; 

    @Bind(R.id.recycler_view) 
    RecyclerView recyclerView; 

    @Nullable 
    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     Log.d("Pager", "onCreateView"); 
     View view = inflater.inflate(R.layout.fragment_overview_pager, container, true); 
     ButterKnife.bind(this, view); 
     return view; 
    } 

    @Override 
    public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { 
     super.onViewCreated(view, savedInstanceState); 
     Log.d("Pager", "onViewCreated"); 
     recyclerView.setLayoutManager(new LinearLayoutManager(getActivity())); 
     recyclerView.setHasFixedSize(true); 

     adapter = new RecyclerViewMaterialAdapter(new OverviewAdapter()); 
     recyclerView.setAdapter(adapter); 
     MaterialViewPagerHelper.registerRecyclerView(getActivity(), recyclerView, null); 
    } 
} 


public class OverviewAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> { 
    @Override 
    public int getItemCount() { 
     Log.d("Adapter", "getItemCount"); 
     return 4; 
    } 

    @Override 
    public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
     Log.d("Adapter", "obCreateViewH"); 
     View view = LayoutInflater.from(parent.getContext()) 
       .inflate(R.layout.overview_item_list, parent, false); 

     return new RecyclerView.ViewHolder(view){}; 
    } 

    @Override 
    public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { 

    } 
} 

Может кто-нибудь мне помочь? Я пытался найти свою ошибку часами. Спасибо

+0

случайно, у вас есть большое изображение загружается? по большому счету, я имею в виду размеры, а не размер файла. – rvalerio

+0

Нет. Нет изображения или что-то еще. Я просто хочу протестировать библиотеку со статическими текстами .. небольшой текст. – Tobias

ответ

0

У меня была аналогичная проблема.

Изменить строку:

View view = inflater.inflate(R.layout.fragment_overview_pager, container, true); 

к:

View view = inflater.inflate(R.layout.fragment_overview_pager, container, false); 
Смежные вопросы