我有一个情景,其中Fragment在其布局中包含了一个自定义视图(通过扩展View类实现)。自定义视图需要访问Fragment的一些方法。但是我无法在自定义视图内部获取到Fragment引用。同时,我也找不到任何可以从自定义视图(作为Fragment的子元素)访问Fragment的方法。
根据Android-Fragment文档:我们可以在视图的构造函数中获取上下文。这个上下文是Activity的一个实例。但没有办法获取托管自定义视图的Fragment的引用。
请告诉我如何在自定义视图内部访问Fragment。
编辑:
添加代码以更好地理解我的问题:
MyFragment.java
public class MyFragment extends Fragment {
int selectedOptionIndex;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//get value of selectedOptionIndex from bundle and save it to this.selectedOptionIndex;
}
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
this.activity = activity;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.myFragmentview, container, false);
return view;
`//i can access views from fragment, but not vice versa.`
}
}
myFragmentview.xml
<com.test.CustomView
android:id="@+id/myCustomView" android:layout_width="fill_parent"
android:layout_height="40dip" layout_weight="1"
/>
public class CustomView extends View {
private MyActivity context;
/** Default Constructor */
public EasCalWeekViewHeader1(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
this.context = (MyActivity) context;
// 现在使用 context,我们可以在此自定义视图中访问活动实例并调用任何其内部的方法。// 但我们无法为片段执行此操作。此时没有办法访问父片段。我无法访问 selectedOptionIndex 并将其设置在此视图中。// 如果视图可以访问父活动,则应该也可以访问父片段。
}
/** Default Constructor */
public EasCalWeekViewHeader1(Context context, AttributeSet attrs) {
super(context,attrs);
this.context = (MyActivity) context;
}
}
}