我正在研究我的一个Android项目,试图减少我的活动中的代码。在其中一个中,我有CustomView(它只是扩展LinearLayout),在单击时打开DialogFrament。现在,我实现这一点的方法是在活动中覆盖onTouch()
,然后从那里打开DialogFrament。它看起来像这样:
@Override
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_UP) {
if (v.getId() == mCustomView.Id()) {
mDialogFragment.show(mFragmentManager, "");
我想将DialogFragment的开放过程从活动转移到CustomView本身,但是,我遇到的问题是我无法获得FragmentManager的实例(使用getSupportFragmentManager()
)在CustomView中。我的计划是可能的,还是我应该坚持我工作的代码?我这样做,所以我的代码看起来更干净,更容易理解。
答案 0 :(得分:11)
在自定义视图中,您可以拨打getContext()
(这将是您的活动),然后您可以将其投放到android.support.v4.app.FragmentActivity
并从那里拨打getSupportFragmentManager()
。
所以这应该做到。
android.support.v4.app.FragmentActivity fragmentActivity = (android.support.v4.app.FragmentActivity) getContext();
FragmentManager fm = fragmentActivity.getSupportFragmentManager();