0

フラグメントを使用する Android 3.1 アプリケーションを開発しています。

これらのフラグメントの 1 つで、n 個のボタンを作成し、それぞれに onClick イベント ハンドラーを設定する必要があります。

それを行うには、これらのイベントを処理するメソッドを作成したいのですが、方法FragmentActivityがわかりません。注:FragmentActivityは、android.support.v4.app.FragmentActivityを使用してすべてのフラグメントを管理するandroid.support.v4.view.ViewPagerです。

別のフラグメントには、次のXMLコードがあります。

    <Button
        android:id="@+id/btnTakeArticlePhotos"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="right"
        android:text="@string/btn_take_photo"
        android:onClick="onTakePhotoClick" />

そして、このコードFragmentActivity:

public void onTakePhotoClick(View view)
{
    Log.v("FillEReportFragmentActivity", "onTakeFactoryPhotoClick");
    int imgType, imgSubType;

    switch (view.getId())
    {
        case R.id.btnTakeFactoryPhotos:
            imgType = ImageType.EREPORT;
            imgSubType = SubImageType.EREPORT_FACTORY_OUTLOOK;
        break;
        case R.id.btnTakeArticlePhotos:
            imgType = ImageType.ARTICLE;
            imgSubType = SubImageType.NONSET;
        default:
            imgType = -1;
            imgSubType = -1;
        break;
    }

    Intent intent = new Intent(FillEReportFragmentActivity.this, CameraActivity.class);
    intent.putExtra(BundleKeys.tablePk, eReportId);
    intent.putExtra(BundleKeys.imgType, imgType);
    intent.putExtra(BundleKeys.imgSubType, imgSubType);

    startActivityForResult(intent, CAMERA_REQUEST_CODE);
}

これらのボタンで同じことをしたい:すべての onClick イベントを処理nするメソッドを作成します。FragmentActivity

プログラムで作成されたボタンで onClick イベントを処理したい場合は、実装する必要があることがわかりましたonClickEventListener

でこれらの onClick イベントを処理するにはどうすればよいFragmentActivityですか? またはより良いアプローチがありますか?

4

1 に答える 1

3

FragmentActivity実装する必要がありますView.OnClickListener

次にFragmentonActivityCreated()コールバックで次のことができます。

getView().findViewById(R.id.Button1).setOnClickListener(
                                  (OnClickListener)getActivity));

また、独自interfaceに定義してActivity実装をinterfaceで同じにすることもできます。実装をonActivityCreated()許可してから、次のように呼び出すこともできます。FragmentOnClickListenerActivity

public MyFragment extends Fragment implements OnClickListener(){
      public MyInterface mInterface;

      protected void onActiviyCreated(){
           mInterface=(MyInterface)getActivity();
      }

      public void onViewCreated(View view, Bundle savedInstanceState){
           view.findViewById(R.id.myButton).setOnClickListener(this);
      }
      public void onClick(View v){
          ....
          mInterface.buttonClicked();
      }
}
于 2012-08-31T13:19:33.367 に答える