我正在开发一个使用片段的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事件?还是有更好的方法?
答案 0 :(得分:3)
您应该使用FragmentActivity
工具View.OnClickListener
。
然后在Fragment
回调的onActivityCreated()
中,您可以执行以下操作:
getView().findViewById(R.id.Button1).setOnClickListener(
(OnClickListener)getActivity));
您还可以定义自己的interface
,并使Activity
的{{1}}工具与interface
相同,并onActivityCreated()
实施Fragment
1}}然后像这样打电话给你OnClickListener
:
Activity