0

フラグメントの数を持つ ViewPager を含むアクティビティを作成しましたn。前へ、次へ、終了ボタンも追加しました。フラグメントは、複数選択の ListView または単一の回答タイプのいずれかです。

ユーザーが [完了] をクリックしたときに、各フラグメントからデータを取得するにはどうすればよいですか? ViewPager から onPageSelected イベントでそれぞれの回答を取得する必要がありますか?

4

1 に答える 1

1

フラグメントとそれを含むアクティビティ間の通信は、インターフェイスを介して行われます。

フラグメントはインターフェイス リスナーを公開する必要があり、アクティビティはそれを実装し、イベントが発生するとフラグメントから通知を受ける必要があります。

私の例を使用することも、アクティビティが実装されないように変更することもできますが、実行時に匿名でリスナーを作成できます (クリック リスナーのボタンに対して何度も行うように)。

class MyFragment {

    // Container Activity must implement this interface
    public interface OnNextPageListener {
        public void onNextPageSelected(String DataString);
    }

    // define listener in fragment
    OnNextPageListener mNextPageListener;

.... class code

  @Override
    public void onAttach(Activity activity) {
      try {
            mNextPageListener = (OnNextPageListener) activity;
        } catch (ClassCastException e) {
            throw new ClassCastException(activity.toString()
                    + " must implement OnNextPageListener");
        }
.... class code...

   ...button press onclick listener method...
   mNextPageListener.onNextPageSelected("My Name is Slim Shaddy");

}


class MainActivity extends Activity implements MyFragment.OnNextPageListener 
    public void onNextPageSelected(String StringData) {
    }
    ...

詳細はこちらhttp://developer.android.com/training/basics/fragments/communicating.html

いずれにせよ、誰かがフラグメントのボタンを押したときにこれを行うことをお勧めします。または、ViewPager.OnPageChangeListener をフックして、onPageScrollStateChanged でデータの保存を開始し、OnPageSelected でそれを完了することで、フラグメントが利用できない場合でもデータを確実に取得できるようにします。もう。

于 2013-05-21T15:26:47.397 に答える