在onCreate上为FindViewById创建Java.Lang.Null.Pointer异常,可能是什么原因引起的?

时间:2013-01-06 21:11:44

标签: android android-layout android-fragments android-xml android-fragmentactivity

之前我有一个活动布局,我现在正试图在一个片段中复制,作为viewPager的一部分。我复制了旧的XML文件并在发生冲突时更改了所有ID。我正在引用此片段的新XML布局以及创建的新ID。但是当我运行它时会得到这个nullpointerexception。

这是logcat文件 http://i48.tinypic.com/14ekq6s.png

这是发生错误的java文件的一部分。

@Override
    public RelativeLayout onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);


        if (container == null) {
            // We have different layouts, and in one of them this
            // fragment's containing frame doesn't exist.  The fragment
            // may still be created from its saved state, but there is
            // no reason to try to create its view hierarchy because it
            // won't be displayed.  Note this is not needed -- we could
            // just run the code below, where we would create and return
            // the view hierarchy; it would just never be used.
            return null;
        }
        inflater.inflate(R.layout.one, null);
        ViewPager viewFinder = (ViewPager) getView();
//setContentView(R.layout.one);


        title = (TextView)     viewFinder.findViewById(R.id.frag_AA);  //ERROR xml id file probz

这是布局文件。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >


    <TextView
        android:id="@+id/frag_AA"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:text="I Am Text"
        android:textAppearance="?android:attr/textAppearanceLarge" />

</RelativeLayout>

2 个答案:

答案 0 :(得分:1)

原因是viewFinder为空。

我看到你夸大了R.layout.one

inflater.inflate(R.layout.one, null);

但是你没有使用inflater返回的视图。 inflater.inflate()会返回一个视图,您应该在这里查找title TextView。

这样的事情:

View view = inflater.inflate(R.layout.one, null);
title = (TextView)view.findViewById(R.id.frag_AA);

(我从未使用过ViewPagers,但看看over this page,我觉得你错了,虽然我可能没错。

答案 1 :(得分:0)

请尝试以下代码..

View myview = inflater.inflate(R.layout.one, null);
title = (TextView)myview.findViewById(R.id.frag_AA);

因为你的inflater没有夸大任何布局null,因为如果

inflater.inflate(R.layout.one, null);是返回类型。 它返回一个视图。 这就出现了这个问题。