我有ActivityA
,其中包含FragmentA
。如何从Fragment
访问活动中的TextView
在Fragment
类中重写onViewCreated()
方法,并使用Fragment
View
来声明TextView
:
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
ActivityA.text_view= (TextView) view.findViewById(R.id.text_view); // your TextView must be declared as (public static TextView text_view) in the Activity
// now access the TextView as you want
}
最简单的方法是在你的Mainactivity中创建一个getter方法,返回你的textview,并通过将你的fragment的activity投射到你的Mainactivity来访问它。
在Mainactivity中,
public AppCompatTextView getMyTextView(){
return myTextView;
}
在Fragment
((MainActivity)getActivity()).getMyTextView()
您可以使用callbacks
或使您的片段作为inner class
。
对于callbacks
,你需要在你的活动中实现一些interface
,让你说你想更新你的TextView,并在片段的onAttach
方法中,你可以使用该接口的参考与活动通信。
在活动:
public class Question implements MyInterFace
在片段:@Override
public void onAttach(Activity activity) {
// TODO Auto-generated method stub
youInterfaceObject = (MyInterFace)activity;
super.onAttach(activity);
}
对于内部类,这很容易,只是创建一个全局变量的TextView
在您的活动,并从内部类调用它。
可能对视图不起作用,但请尝试一下:
((MainActivity) getActivity()).textViewName;