FragmentManager子节点和findViewById NullPointer

时间:2014-01-08 01:00:48

标签: java android android-fragments

我目前有一个名为 PlayActivity 的FragmentActivity。 PlayActivity包含5个子片段。在PlayActivity的onStart()方法中,我试图使用 findViewById(R.id.avatarView)在其中一个子片段中引用ImageView,但是,它会出现空值。

PlayActivity中的代码:

public void updateAvatar(Bitmap avatar)
{
    ImageView avatarViewer = (ImageView) findViewById(R.id.avatarView);
    avatarViewer.setImageBitmap(avatar);
}

子片段的XML:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".PlayerActivity" >

<ImageView
    android:id="@+id/avatarView"
    android:layout_width="90dp"
    android:layout_height="90dp"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true"
    android:layout_marginLeft="34dp"
    android:layout_marginTop="62dp"
    android:src="@drawable/energy_icon" />

1 个答案:

答案 0 :(得分:1)

您无法直接从活动中访问片段视图的元素。只有相关的片段才能访问自己的视觉元素。

在片段中创建一个公共方法,该方法将采用Bitmap参数并将位图设置为正确的ImageView。然后从您的活动中调用此方法并将位图传递给它。