2015-10-16 2 views
0

Я пытаюсь реализовать RecyclerView во фрагменте. Но я получаю shutting down vm (сбой приложений), пытаясь раздуть вид в onCreateView.Выключение VM при раздувании макета, содержащего RecyclerView

fragment_test.xml

<LinearLayout 
    android:id = "@+id/todoRefreshContainer" 
    xmlns:android = "http://schemas.android.com/apk/res/android" 
    android:layout_width = "match_parent" 
    android:layout_height = "wrap_content"> 
     <android.support.v7.widget.RecyclerView 
     android:id="@+id/recyclerView" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"/> 
</LinearLayout> 

test.java

@Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) 
    { 
     super.onCreateView(inflater, container, savedInstanceState); 
     try 
     { 
      if (null == view) 
      { 
       view =inflater.inflate(R.layout.fragment_test, 
             container, false); 
      } 
     } 
     catch (Exception e) 
     { 
      e.printStackTrace(); 
     } 
     return view; 
    } 

P.S. : Я добавил блок catch try и все еще не понял, что происходит. Удаление recyclerview не создает этот erroor,

+0

вы раздуваете новый вид, а также называете 'super'. исправьте его, раздувая только один вид. –

+0

@vipul_asri: Нет. Это не работает. Если бы это была проблема, тогда это не сработало бы с другой компоновкой. – Heisenberg

+0

Что сделал 'e.printStackTrace();' print в logcat? – donfuxx

ответ

0

Наконец-то я смог это решить. Если кто-то сталкивается с этой проблемой, запустите отладчик, и вы сможете увидеть полную ошибку.

Это исключение возникает, если вы не указали layoutManager для RecyclerView. Добавьте менеджер компоновки, как это, в onCreateView.

RecyclerView recyclerView = (RecyclerView) view.findViewById(R.id.recyclerView); 
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(context); 
recyclerView.setLayoutManager(linearLayoutManager); 

я делал выше в другом потоке (AsyncTask). Это должно быть сделано на UI thread.