-1

をダブルクリックで発生する私は、メイン断片(以下に定義)アプリのクラッシュのアイコンリスナー

ツールバーフラグメント(どこでも使用される一般的なツールバーフラグメントで定義された左のアイコンリスナーのプロパティで呼び出されているツールバーの断片を持っています)ヘッダとして

public void refresh(commonFragment f) { 
     if (view != null && f != null && !commonFragment .class.equals(f.getClass()) && !BlankcommonFragment .class.equals(f.getClass())) { 

      setRightIcon(f.getRightIcon(), f.getRightIconListener()); 
      setLeftIcon(f.getLeftIcon(), f.getLeftIconListener()); 


     } 
    } 

共通フラグメント(共通プロパティは、再使用のためにここに保持)

 public Integer getLeftIcon() { 
      return R.drawable.left_fragment_icon; 
     } 

     public View.OnClickListener getLeftIconListener() { 
      return new NavigationOnClickListener(this, new LeftFragment()); 
     } 
public View.OnClickListener getRightIconListener() { 

     return MenuFragment.instance().getDashboardIconListener(); 
    } 

ページフラグメント(問題は左のアイコンをリスナーに発生したページ)

@Override 
    public Integer getLeftIcon() { 
     return R.drawable.back_icon; 
    } 

    @Override 
    public View.OnClickListener getLeftIconListener() { 

     return new NavigationOnClickListener(this, new HomeFragment()); 
    } 

NavigationOnClickListener(ナビゲーションの利用)

public class NavigationOnClickListener implements View.OnClickListener { 
    private Common Fragment from; 
    private Common Fragment to; 

    public NavigationOnClickListener(Common Fragment from, Common Fragment to) { 
     this.from = from; 
     this.to = to; 
    } 

    @Override 
    public void onClick(View v) { 
     from.navigate(to); 
    } 
} 

バックボタンアイコンと左のアイコントグル(同じ画像ビューが、異なる画像IDで)をクリックすると、別のページに表示されます。
例:
A、B、Cの3つのフラグメントがあり、Bはホームフラグメントです。それはAが表示されますB上の左のアイコンをクリックすると、Cの背面のアイコンをクリックして
は問題が戻ってアイコンをダブルクリックアプリをクラッシュさ

Bに表示されます

NullPointerException: Attempt to invoke virtual method 'void android.widget.ListView.setAdapter(android.widget.ListAdapter)' on a null object reference 

views.setAdapterバックボタンを複数回クリックでクラッシュを防止するための方法

public View build(final LayoutInflater inflater, final ViewGroup container, Bundle savedInstanceState) { //line added 

     ... 

    View home = inflater.inflate(R.layout.fragment_home, container, false); 

    final Activity activity = this.getActivity(); 
    final HomeFragment fragment = this; 

     @Override 
     public void onSuccess(Call<List<xyzView>> call, Response<List<xyzView>> response) { 
      ListView views = (ListView) container.findViewById(R.id.course_list); 
      views.setAdapter(new xyzAdapter(activity, R.layout.fragment_home_item, response.body(), fragment)); 

に来エラー?

+1

あなた 'ListView'、すなわち' views'はnullです。コンテナとは何ですか? – SripadRaj

+0

@SripadRajは、 'Error comming on views.setAdapter'にメインラインを追加しました。そこにはコンテナがあります。 –

+0

'new HomeFragment()'を作成すると、それに含まれるビューは初期化されません。 –

答えて

0

ビュー上でnullpointerexceptionが発生するのを防ぐには、正しいXMLレイアウトで見つけます。例えば

、そのリストビューがfragment_home.xmlにある場合...

View home = inflater.inflate(R.layout.fragment_home, container, false); 
final ListView views = (ListView) home.findViewById(R.id.course_list); 

... 

    @Override 
    public void onSuccess(Call<List<xyzView>> call, Response<List<xyzView>> response) { 

     views.setAdapter(new xyzAdapter(getActivity(), R.layout.fragment_home_item, response.body(), HomeFragment.this)); 
+0

このLineはマジックをやってくれましたありがとうございました - >最後のListViewビュー=(ListView)home.findViewById(R.id.course_list); –

関連する問題