-1

私はタブ付きアクティビティを持っています。最初のフラグメント(Tab1History)にRecyclerviewとCardviewを表示します。私はCardView用のXMLファイルを作成しました。フラグメントXMLではRecyclerviewを挿入しました。私も、アダプタを作成しました:"RecyclerView.setHasFixedSize(boolean) 'はヌルオブジェクトリファレンスで" Recyclerview into fragment

public class Tab1History extends Fragment 
{ 



private RecyclerView recyclerView; 
    private RecyclerView.Adapter adapter; 

private List<CespiteOgg> cespiteOggList; 
private Date location; 
Date date = new Date(location.getTime()); 



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

    recyclerView = (RecyclerView) getView().findViewById(R.id.RecyclerView); 
    recyclerView.setHasFixedSize(true);//every item of the RecyclerView has a fix size 
    recyclerView.setLayoutManager(new LinearLayoutManager(getContext())); 

    cespiteOggList = new ArrayList<>(); 

    for(int i=0; i<=10; i++) 
    { 
     CespiteOgg cespiteOgg = new CespiteOgg("heading"+(i+1), "Lorem ipsum", date, "sdjijsad", "jdkjd"); 

     cespiteOggList.add(cespiteOgg); 

    } 

    adapter = new CespiteAdapter(cespiteOggList, getContext()); 

    recyclerView.setAdapter(adapter); 

      return rootView; 
} 
} 

そして、それはスタックトレースです:

FATAL EXCEPTION: main 
                     Process: com.example.arslan.qrcode, PID: 14311 
                     java.lang.NullPointerException: Attempt to invoke virtual method 'void android.support.v7.widget.RecyclerView.setHasFixedSize(boolean)' on a null object reference 

はここcespite_card_view XMLです:

<?xml version="1.0" encoding="utf-8"?> 
<android.support.v7.widget.CardView 
xmlns:android="http://schemas.android.com/apk/res/android" 
android:orientation="vertical" android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:id="@+id/cardView"> 


<RelativeLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:orientation="vertical"> 

    <ImageView 
     android:id="@+id/imgCespite" 
     android:layout_width="100dp" 
     android:layout_height="100dp" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentTop="true" 
     android:layout_marginRight="16dp" 
     android:src="@mipmap/thebigger" /> 

    <TextView 
     android:id="@+id/txtNumeroInventario" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentTop="true" 
     android:layout_toRightOf="@id/imgCespite" 
     android:text="text1" /> 

    <TextView 
     android:id="@+id/txtNomeCespite" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_below="@+id/txtNumeroInventario" 
     android:layout_toRightOf="@id/imgCespite" 
     android:text="text2" /> 

    <TextView 
     android:id="@+id/txtDataCatalogazione" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_below="@+id/txtNomeCespite" 
     android:layout_toRightOf="@id/imgCespite" 
     android:text="text3" /> 


    <TextView 
     android:id="@+id/txtAula" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_below="@+id/txtDataCatalogazione" 
     android:layout_toRightOf="@id/imgCespite" 
     android:text="text4" /> 

    <TextView 
     android:id="@+id/txtNomeUser" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_below="@+id/txtAula" 
     android:layout_toRightOf="@id/imgCespite" 
     android:text="text5" /> 

</RelativeLayout> 

public class CespiteAdapter extends RecyclerView.Adapter<CespiteAdapter.ViewHolder> 
{ 
    private List<CespiteOgg> cespiteOggList; 
    private Context context; 

public CespiteAdapter(List<CespiteOgg> cespiteOggList, Context context) { 
    this.cespiteOggList = cespiteOggList; 
    this.context = context; 
} 

public class ViewHolder extends RecyclerView.ViewHolder 
{ 
    public CardView cv; 
    public TextView txtNumInventario; 
    public TextView txtNomeCespite; 
    public TextView txtDtCatalogazione; 
    public TextView txtAula; 
    public TextView txtNomeUser; 


    ViewHolder(View itemView) 
    { 
     super (itemView); 
     //cv = (CardView) itemView.findViewById(R.id.cardView); 
     txtNumInventario = (TextView) itemView.findViewById(R.id.txtNumeroInventario); 
     txtNomeCespite = (TextView) itemView.findViewById(R.id.txtNomeCespite); 
     txtDtCatalogazione = (TextView) itemView.findViewById(R.id.txtDataCatalogazione); 
     txtAula = (TextView) itemView.findViewById(R.id.txtAula); 
     txtNomeUser= (TextView) itemView.findViewById(R.id.txtNomeUser); 

    } 
} 



@Override 
public CespiteAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) 
{ 
    LayoutInflater inflater = LayoutInflater.from(parent.getContext()); 

    View cespiteView = inflater.inflate(R.layout.cespite_card_view, parent, false); 

    return new ViewHolder(cespiteView); 
} 

@Override 
public void onBindViewHolder(ViewHolder holder, int position) 
{ 
    CespiteOgg cespiteOgg = cespiteOggList.get(position); 

    holder.txtNumInventario.setText(cespiteOgg.getNumInventario()); 
    holder.txtNomeCespite.setText(cespiteOgg.getNomeCespite()); 
    holder.txtDtCatalogazione.setText(cespiteOgg.getDtCatalogazione().toString()); 
    holder.txtAula.setText(cespiteOgg.getAula()); 
    holder.txtNomeUser.setText(cespiteOgg.getNomeUser()); 

} 

@Override 
public int getItemCount() 
{ 
    return cespiteOggList.size(); 
} 
} 

そしてここでは、フラグメントです

そしてそれは、フラグメントレイアウトです:この行

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:paddingBottom="@dimen/activity_vertical_margin" 
android:paddingLeft="@dimen/activity_horizontal_margin" 
android:paddingRight="@dimen/activity_horizontal_margin" 
android:paddingTop="@dimen/activity_vertical_margin" 
tools:context="com.example.arslan.qrcode.Main" 
android:layout_weight="1" 
> 

<android.support.v7.widget.RecyclerView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/my_recycler_view"></android.support.v7.widget.RecyclerView> 

</RelativeLayout> 
+0

レイアウトを投稿してくださいcespite_card_view –

+0

onCreateView内で 'getView()'を呼び出すことはできません...ビューはまだ作成されていません! –

+0

彼らはおそらく、実際に、彼らがこれについて投稿した最後の質問のコメントから固定していると思われます。もしそうでなければ、スタックトレースは得られません。 –

答えて

2

変更:これに

recyclerView = (RecyclerView) getView().findViewById(R.id.RecyclerView); 

recyclerView = (RecyclerView) rootView.findViewById(R.id.RecyclerView); 

また、あなたはあなたのRecyclerView.Adapterに同じレイアウトを使用して、あなたのしていますこの行のFragment

View rootView = inflater.inflate(R.layout.cespite_card_view, container, false); 

あなたはこのように、その中にあなたのRecyclerViewウィジェットが含まれてあなたのフラグメントのレイアウトファイルを持っている必要があります。

<android.support.v7.widget.RecyclerView 
android:id="@+id/recyclerView" 
android:layout_width="match_parent" 
android:layout_height="wrap_content" 
android:background="#e9e9e9 /> 
+0

クラッシュを維持する.. – arst3k

+0

今編集された答えを確認してください。 –

+0

私はRecyclerViewウィジェットを挿入しましたが、うまくいきません。 – arst3k

0

変更getView()rootView

getViewに - フラグメントのレイアウトのルートビューを取得します。 (onCreateView(LayoutInflater、ViewGroup、Bundle)によって返されたもの)を返します。

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

    recyclerView = (RecyclerView) rootView.findViewById(R.id.RecyclerView); 
    recyclerView.setHasFixedSize(true);//every item of the RecyclerView has a fix size 
    recyclerView.setLayoutManager(new LinearLayoutManager(getContext())); 

    cespiteOggList = new ArrayList<>(); 

    for(int i=0; i<=10; i++) 
    { 
     CespiteOgg cespiteOgg = new CespiteOgg("heading"+(i+1), "Lorem ipsum", date, "sdjijsad", "jdkjd"); 

     cespiteOggList.add(cespiteOgg); 

    } 

    adapter = new CespiteAdapter(cespiteOggList, getContext()); 

    recyclerView.setAdapter(adapter); 

      return rootView; 
} 
+0

クラッシュを防ぎます。 – arst3k

+0

@Arstek RecyclerViewのIDを設定しませんでした。それを確認してください –

+0

いいえ、私は設定しましたが、間違ったレイアウトファイルを膨らませていました。 – arst3k

0

あなたはビューを膨らませて表示する必要があります。 使用:代わりの

recyclerView = (RecyclerView) rootView.findViewById(R.id.RecyclerView); 

recyclerView = (RecyclerView) getView().findViewById(R.id.RecyclerView); 

幸運。

+0

はクラッシュします。 – arst3k

関連する問題

 関連する問題