按钮上的OnClick事件处理程序以编程方式创建

时间:2012-08-31 13:11:44

标签: android android-fragments android-viewpager

我正在开发一个使用片段的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

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

1 个答案:

答案 0 :(得分:3)

您应该使用FragmentActivity工具View.OnClickListener

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

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

您还可以定义自己的interface,并使Activity的{​​{1}}工具与interface相同,并onActivityCreated()实施Fragment 1}}然后像这样打电话给你OnClickListener

Activity