从Fragment对象访问FragmentActivity中的元素

时间:2012-02-22 14:26:58

标签: android android-fragments swipe fragmentpageradapter

我有一个带有FragmentPagerAdapter的FragmentActivity,它包含许多Fragment对象,我可以通过水平滑动来滑动它们。

我想知道我是否可以从Fragment对象中访问FragmentActivity中的元素(“elementToBeChanged”)?我想将一个String从Fragment类传递给FragmentActivity对象中的TextView元素。

public class GalleryPagerActivity extends FragmentActivity implements OnClickListener {

private TextView elementToBeChanged;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    super.setContentView(R.layout.gallery_pager);

    elementToBeChanged = (TextView) findViewById(R.id.tvTop);
    elementToBeChanged.setOnClickListener(this);

}
}

我该怎么做?每当Fragment对象进入视线时(通过滑动),都必须更新TextView元素。

看起来应该是这样的:

public class GalleryFragment extends Fragment {

private FragmentActivity fa;
private LinearLayout ll;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

    fa = super.getActivity();

    ll = (LinearLayout) inflater.inflate(R.layout.gallery_fragment, container, false);
...
// ////////
// UPDATE THE "TextView elementToBeChanged" object in the parent FragmentActivity class HERE WHENEVER THIS FRAGMENTS BECOMES ACTIVE/VISIBLE...
// ////////

    return ll;
}

1 个答案:

答案 0 :(得分:10)

在您的GalleryPagerActivity中创建一个函数,例如updateTextView(String text)。该函数将TextView设置为输入值。然后在您的GalleryFragment中,只需调用此函数,并将文本显示为:

    ((GalleryPagerActivity)getActivity()).updateTextView("my text");