2016-04-06 24 views
0

私はカップルの断片を持つナビゲーションドロワーアプリを持っています。そのうちの1人は、recyclerviewadapter/recyclerviewholderを使用してアイテムを表示します。フラグメント間の切り替えはうまくいきますが、切り替え後には、リスナーを持つアイテムをクリックするとnullpointerexceptionが発生します。今、私はリスナーなしでそれをテストし、それは正常に動作します。リスナーがリフレッシュされていないと思いますか?フラグメントがスワイプしているとき?誰かが私を助けてくれますか?日を探していて、まだ修正できません。フラグメントを前後に切り替えた後のRecyclerviewのAndroid Nullpointerexception

プロセス:com.mikepenz.materialdrawer.app.debug、PID:30803 のjava.lang.NullPointerException:「 インターフェイスメソッドを呼び出すための試みのボイド com.mikepenz.materialdrawer.app.RecyclerViewAdapter $ OnItemClickListener.onItemClick (java.lang.String) ' nullオブジェクトの参照に com.mikepenz.materialdrawer.app.RecyclerViewAdapter $ 1.onClick(RecyclerViewAdapter.java:43) at android.view.View.performClick(View.java: 5198) android.view.View $ PerformClick.run(View.java:21147)android.os.Looper.loop(Looper.java:148) でandroid.os.Handler.dispatchMessage(Handler.java:95) でandroid.os.Handler.handleCallback(Handler.java:739) ででandroid.app.ActivityThread.main(ActivityThread.java:5417) at java.lang.reflect.Method.invoke(ネイティブメソッド) at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java: com.android.internal.os.ZygoteInit.mainにおける726) (ZygoteInit.java:616)

public class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerViewHolders> { 

private List<ItemObject> itemList; 
private Context context; 
private OnItemClickListener listener; 


public RecyclerViewAdapter(Context context, List<ItemObject> itemList) { 
    this.itemList = itemList; 
    this.context = context; 
} 

@Override 
public RecyclerViewHolders onCreateViewHolder(ViewGroup parent, int viewType) { 

    View layoutView = LayoutInflater.from(parent.getContext()).inflate(R.layout.card_view_list, null); 
    RecyclerViewHolders rcv = new RecyclerViewHolders(layoutView, context); 
    return rcv; 
} 

@Override 
public void onBindViewHolder(RecyclerViewHolders holder, final int position) { 
    holder.countryName.setText(itemList.get(position).getName()); 
// holder.countryPhoto.setImageResource(itemList.get(position).getPhoto()); 

    holder.countryName.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
     // listener.onItemClick(itemList.get(position).getName()); 

      Log.d("HELLO ",itemList.get(position).getName()); 
      if (position ==1) 
      { 
       listener.onItemClick("GA"); 
      } 
     } 
    }); 

} 


public interface OnItemClickListener{ 
    void onItemClick(String textName); 
} 

public void setOnItemClickListener(OnItemClickListener listener){ 
    this.listener = listener; 
} 


@Override 
public int getItemCount() { 
    Log.e("itemlist size ", this.itemList.size() + ""); 
    return this.itemList.size(); 
} 

}

+0

それを設定しようとすると、あなたのリスナーのnullの場合も、それはあなたのために働くかもしれ

if(listener!=null){ listener.onItemClick("GA"); } 

であなたの次のコード

listener.onItemClick("GA"); 

を置き換えますあなたの 'textName'がnullであると言っています。何値が渡されているかを確認してください。 – Mohit

答えて

0

あなたはonItemClick

+0

良いアイデアですが、nullにすることはできません。 フラグメント間を行き来するときにリスナーが以前のIDを保持する可能性はありますか? – user1899158

+0

可能です。 –

関連する問題