2015-12-15 7 views
5

AppCompatActivityでViewPager内のフラグメントにListViewを作成しようとしています。 AppCompatActivityでは、すべてのビュー要素がCoordinatorLayoutのwrappendです。私は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

にこのライン

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

を変更します。そうしないと、このように、XMLファイルにrecyclerviewにIDを設定する必要がありますか? – 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方法(それぞれ)を呼び出す必要があります。あなたがListFragmentを使用していないとして、あなたが、android.R.id.listを使用してはならない

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

プラス、。 Recyclerview(XMLレイアウトのように)のidに置き換えてください。

+1

Wowwありがとうございました!私はR.id.listが私のリストを参照していなかったのを見たことはありませんでした。私は何時間も立ち往生した! – user3432681

-1

あなたはandroid.R.id.listをrecyclerview idに設定しましたか?

android:id="@+id/recyclerview" 

を、あなたはクラッシュレポートを投稿することができます

mRecyclerView = (RecyclerView) view.findViewById(R.id.recyclerview); 
関連する問題