2016-08-16 14 views
0

私はカスタムレイアウトとのユーザーのやり取りを処理するためのレイアウトとイベントリスナーを含むフラグメントを持っています。しかし、フラグメント内のイベントリスナを設定する際にnullポインタ例外が発生します。ここでは、カスタムビュー参照がフラグメント内でnullであることがわかりました。あなたは正確にエラーが発生しているんフラグメント内のカスタムレイアウト

public class CustomCalendarView extends LinearLayout { 

private EventListener eventListener; 
public CustomCalendarView(Context context, AttributeSet attrs) 
{ 
    super(context); 
    ............ 
    cellView = (GridView) findViewById(R.id.calendar_grid); 
    cellView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() { 
     @Override 
     public boolean onItemLongClick(AdapterView<?> adapterView, View view, int i, long l) { 
      if (eventListener == null) 
       return false; 

      eventListener.onDayLongPress((Date) adapterView.getItemAtPosition(i)); 
      return true; 
     } 
    }); 
} 

public void setEventListener(EventListener eventListener) { 
    this.eventListener = eventListener; 
} 

public interface EventListener { 
    void onDayLongPress(Date date); 
} 

}

public class DescribeFragment extends Fragment { 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) 
{ 
    View view = inflater.inflate(R.layout.fragment_explore_planner, container, false); 
    MainActivity activity = (MainActivity) getActivity(); 

    customCalendarView = ((CustomCalendarView) view.findViewById(R.id.calendar_view)); 
    customCalendarView.setEventListener(new CustomCalendarView.EventListener() { 
     @Override 
     public void onDayLongPress(Date date) { 
      Toast.makeText(getContext(), timeFormatter.format(date), Toast.LENGTH_SHORT).show(); 
     } 
    }); 

}

+1

コードを入力してください。リスナーを設定し、レイアウトからビューを取得するコード –

+0

式の1つにヌル参照があるため、NPEを取得しています。あなたのコードを見ずにほとんどの人が教えてくれることを確かめてください! – Shaishav

+0

おそらくcellViewにnull参照がありますか? – Chris623

答えて

0

私は、カスタムビューのコンストラクタからsuper(context、attrs)を呼び出さなかったことがわかりました。 super(コンテキスト)からsuper(コンテキスト、attrs)をコンテキストとattrsをパラメータとして持つコンストラクタ内で変更すると、私の問題が解決しました。

0

? 3つの可能性があります。まず、customCalendarViewはnullでもかまいません。 fragment_explore_plannerのIDはのcalendar_viewです。次に、EventListenerにパラメータとして渡されたDateオブジェクトはnullになります。 adapterViewがヌルであるか、iポジションが含まれていることを確認してください。また、timeFormatterもチェックしてください。

+0

は、custmCalendarViewがnullであることが判明しました – Subhanandh

+0

私はあなたを助けることができたらうれしいです。 – faranjit

+0

他のビューはnullではありません。なぜ私はこのカスタムビューだけがnullであるのかわかりません。 – Subhanandh

関連する問題