这是我的布局文件。
<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=".ImageDownloadActivity" >
<EditText
android:id="@+id/url_text"
android:layout_width = "match_parent"
android:layout_height="wrap_content"
android:hint="@string/url_field_hint"
android:inputType="textUri"
android:layout_alignParentTop="true"/>
<Button
android:id="@+id/download_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/download_url"
android:layout_below="@+id/url_text"
android:layout_centerHorizontal="true"
android:onClick="downloadImage"
/>
</RelativeLayout>
这是我的片段类
public class ImageDownloadFragment extends Fragment {
public ImageDownloadFragment() {
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
return (RelativeLayout)inflater.inflate(R.layout.image_download, null);
}
}
在我正在做的活动中。
imageDownloadFragment = new ImageDownloadFragment();
FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
fragmentTransaction.replace(R.id.image_download_layout, imageDownloadFragment);
fragmentTransaction.commit();
EditText urlText = (EditText)findViewById(R.id.url_text);
if(urlText!=null)
urlText.setText(urlEntered);
所以我有一个xml布局。我在片段中膨胀,然后我在容器中替换片段。到目前为止一切正常。但是在提交FragmentTransaction之后,当我尝试访问片段中的EditText视图时,它会给我空指针异常。 R文件中的所有ID都是正确的。请建议
答案 0 :(得分:0)
你应该尝试:
public class ImageDownloadFragment extends Fragment {
private EditText ed;
public ImageDownloadFragment() {}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.image_download, container, false);
ed = (EditText)v.findViewById(R.id.url_text);
return v;
}
}
由于您要检索的EditText位于Fragment的布局中(我猜)。
答案 1 :(得分:0)
检查findViewById returns NULL when using Fragment
在onCreateView
尝试使用
return (RelativeLayout)inflater.inflate(R.layout.image_download, container, false);
希望它有所帮助,请评论。