0

我正在开发一个使用片段的 Android 3.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);
}

我想对这些n按钮做同样的事情:创建一个方法FragmentActivity来处理所有的 onClick 事件。

我看到,如果我想处理以编程方式创建的按钮上的 onClick 事件,我需要实现onClickEventListener.

如何处理那些 onClick 事件FragmentActivity?还是有更好的方法?

4

1 回答 1

3

你应该做你的FragmentActivity工具View.OnClickListener

然后在您FragmentonActivityCreated()回调中,您可以执行以下操作:

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

你也可以定义你自己的interface,并让你的Activity实现interface与 in 相同onActivityCreated(),然后让Fragment实现OnClickListener,然后Activity像这样调用你:

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 回答