2015-12-15 139 views
5

我試圖在AppCompatActivity的ViewPager中的片段中創建一個ListView。在AppCompatActivity中,所有視圖元素都被封裝在CoordinatorLayout中。因爲我使用了CoordinatorLayout。我不得不使用RecylerView我試圖按照 developer.android.com的訓練,但我的應用程序在我的日誌後停止。這是myFragment中我的代碼在應用程序停止。在片段中實現RecyclerView

import android.app.Activity; 
import android.os.Bundle; 
import android.support.v4.app.Fragment; 
import android.support.v7.widget.LinearLayoutManager; 
import android.support.v7.widget.RecyclerView; 
import android.util.Log; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 

//... 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) { 
    View view = inflater.inflate(R.layout.fragment_city_list, container, false) 

    mRecyclerView = (RecyclerView) view.findViewById(android.R.id.list); 
    mLayoutManager = new LinearLayoutManager(this.getActivity()); 
    Log.d("debugMode", "The application stopped after this"); 
    mRecyclerView.setLayoutManager(mLayoutManager); 

    mAdapter = new RecyclerAdapter(getNames()); 
    mRecyclerView.setAdapter(mAdapter); 
    return view; 
} 

//... 
+0

你能後的崩潰報告嗎? – sha

回答

9

使用此

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) { 
    View view = inflater.inflate(R.layout.fragment_city_list, container, false) 

    // Replace 'android.R.id.list' with the 'id' of your RecyclerView 
    mRecyclerView = (RecyclerView) view.findViewById(android.R.id.list); 
    mLayoutManager = new LinearLayoutManager(this.getActivity()); 
    Log.d("debugMode", "The application stopped after this"); 
    mRecyclerView.setLayoutManager(mLayoutManager); 

    mAdapter = new RecyclerAdapter(getNames()); 
    mRecyclerView.setAdapter(mAdapter); 
    return view; 
} 

請立即撥打了RecyclerviewsetLayoutManager & setAdapter方法(分別)。

另外,

mRecyclerView = (RecyclerView) view.findViewById(android.R.id.list);

因爲你不使用ListFragment你不應該使用android.R.id.list。將其替換爲您的idRecyclerview,如在您的XML佈局中)。

+1

Woww謝謝!很晚了,我沒有看到R.id.list沒有引用我的列表!我被困了幾個小時! – user3432681

-1

你是否將android.R.id.list設置爲recyclerview ID?否則你應該設置一個ID,recyclerview在XML文件中,就像這樣:

android:id="@+id/recyclerview" 

和改變這一行

mRecyclerView = (RecyclerView) view.findViewById(android.R.id.list); 

mRecyclerView = (RecyclerView) view.findViewById(R.id.recyclerview);