0

そのため、 にボタンがありますListFragmentonCLickボタンの メソッドはに実装されていますMainActivity(適切な解決策かどうかはわかりませんが、それが何であるかはわかりません)。ボタンをクリックするAlertDialogとポップアップが表示され、ダイアログ オプションの 1 つを選択すると、フラグメントが使用しているデータセットが変更されます。

問題は、がAlertDialog消えたとき、ListFragmentまだ古いデータが表示されていることです。

ListFragmentから更新する方法はありますMainActivityか?

メイン アクティビティから呼び出すことができるように特定のメソッドを静的にしようとしましListFragmentたが、それらのメソッドは非静的フィールドなどを使用するため、静的にすることはできません。

4

4 に答える 4

1

そのアダプターを呼び出すことで、ListFragments を更新できるはずですnotifyDataSetChanged()(アダプターがそのBaseAdapterサブクラスから派生したものであると仮定します)。DialogInterface.OnDismissListenerこれを行う最も簡単な方法は、おそらくダイアログに an を設定することです。

myDialog.setOnDismissListener(new DialogInterface.OnDismissListener() {
  @Override
  public void onDismiss(DialogInterface dialog){
    myBaseAdapter.notifyDataSetChanged();
  }
});

ListFragment実装に応じて、アダプターへの参照を保持するか、から直接取得することができます。

于 2012-08-15T19:23:54.347 に答える
1

したがって、ListFragmentフラグメントのアダプターを静的として宣言し、このアダプターが埋められるリストを静的として宣言しました。

主な活動から私はこれを行います:

ListFragment.item.add(mChosenFilePath);
ListFragment.fileList.notifyDataSetChanged();

どこ:

item- 表示される要素を含むリストです

mChosenFilePathitem-ダイアログの結果として に追加されたファイルのパス

fileList- 私のアダプターです

于 2012-08-16T16:34:15.447 に答える
0

フラグメントのタグまたは ID を設定します。その後、Activity からフラグメントに対してメソッドを直接呼び出すことができます。

Fragment myne = findFragmentByTag( "MyFragment" );
MyFragment target = (MyFragment) myne;
target.refresh(); // 'Refresh' method to be declared by MyFragment implementation
于 2012-08-15T19:09:43.947 に答える
0

考えられる解決策は 3 つあります。

  1. アクティビティではなく、フラグメントのクリックをリッスンします。
  2. cancelダイアログのボタンにリスナーを設定し、必要に応じてフラグメントをリロードします。
  3. タグを使用してフラグメントを追加し、そのタグでマネージャーからフラグメントを取得して、適切なメソッドを呼び出します。
于 2012-08-15T19:04:01.420 に答える