0

フラグメントで壁にぶつかり、フラグメント内のリストビューのアダプターが変更されたときにビューの更新をトリガーしています。今私は持っています:

  • FragmentManager を保持するメイン アクティビティ
  • アクティビティは FragmentPagerAdapter.getItem メソッドを通じて位置に基づいてフラグメントを作成します
  • 後続のアクティビティまたはボタンを押すと、フラグメントの 1 つの背後にあるデータが変更されます
  • アクティビティは、カスタム Fragment クラスの refresh メソッドを呼び出して、データの更新をトリガーします
  • refresh メソッドは、フラグメント内の ListView オブジェクトを取得します
    • ここで Null 例外が発生します

更新方法は次のとおりです。

public void refresh() {
  groups = new Select()
    .from(Group.class)
    .execute();

  listView = (ListView)getActivity().findViewById(R.id.overview_container);
  // Never get here
  groupAdapter.clear();
  groupAdapter.setItems(groups);
  listView.invalidateViews();   
}

セットアップは

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
  view = inflater.inflate(R.layout.fragment_overview, container, false);

  groups = new Select()
    .from(Group.class)
    .execute();

  listView = (ListView)view.findViewById(R.id.overview_container);
  listView.setAdapter(new GroupAdapter(view.getContext(), R.layout.time_view, groups));     
  return view;
}

ここで私が見逃している基本的なものはありますか? この問題を回避できるリスナーのような簡単なパターンはありますか? ビューを保存しても、null以外のものを返すようには見えません。

4

1 に答える 1

0

私は FragmentManager を介して Fragment をフェッチし、raw インターフェイスに変換してインターフェイス メソッドを実行していました。

代わりに、生成されたフラグメントへの参照を保持しているので、自由に参照できます。

于 2013-03-29T02:14:30.503 に答える