android - 使用Fragment下的findViewById NULL

时间:2015-01-03 08:51:46

标签: java android

我说英语不好。所以很多都很尴尬。另外,我希望我理解,所以我使用谷歌翻译。

我有Null Pointer Error的源代码。

我该如何解决?

首先是Xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/LinearLayout1"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="${relativePackage}.${activityClass}" >

    <LinearLayout

        android:layout_width="match_parent"
        android:layout_height="wrap_content" >

        <ToggleButton
            android:id="@+id/toggleButton1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="0.50"
            android:text="ToggleButton" />

        <ToggleButton
            android:id="@+id/toggleButton2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="0.50"
            android:text="ToggleButton" />
    </LinearLayout>

        <android.support.v4.view.ViewPager
            android:id="@+id/pager2"
            android:layout_width="wrap_content"
            android:layout_height="match_parent" />

</LinearLayout>

这是java文件

package ui.tab;

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.LinearLayout;

import com.kdevproject.game.mining.R;

public class Tab2Activity extends Fragment{


    // newInstance constructor for creating fragment with arguments
    public static Tab2Activity newInstance() {
        Tab2Activity tab2Activity = new Tab2Activity();
        return tab2Activity;
    }

    // Store instance variables based on arguments passed
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

    }

    // Inflate the view for the fragment based on layout XML
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.activity_tab2, container, false);
        if (container == null) {
            return null;
        }

        ViewPager mViewPager = (ViewPager) getView().findViewById(R.id.pager2);

        return view;
    }
}

class MyPagerAdapter extends FragmentPagerAdapter {
    private static int NUM_ITEMS = 6;

    public MyPagerAdapter(FragmentManager fragmentManager) {
        super(fragmentManager);
    }

    // Returns total number of pages
    @Override
    public int getCount() {
        return NUM_ITEMS;
    }

    // Returns the fragment to display for that page
    @Override
    public Fragment getItem(int position) {
        switch (position) {
        case 0: // Fragment # 0 - This will show FirstFragment
            return Tab2_1Activity.newInstance();
        case 1:
            return Tab2_1Activity.newInstance();

        }
        return null;
    }

    // Returns the page title for the top indicator
    @Override
    public CharSequence getPageTitle(int position) {
        return "Page " + position;
    }

}

1 个答案:

答案 0 :(得分:3)

view中使用getView()代替onCreateView来初始化ViewPager:

    ViewPager mViewPager = (ViewPager)view.findViewById(R.id.pager2);