k dev
k dev

Reputation: 55

android - findViewById NULL under using Fragment

I do not speak English well. So a lot of it is awkward. Also, I wish me to understand, so I used the google translator.

I had the source code from the Null Pointer Error.

how can I it fix?

First It's 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>

It's java File

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;
    }

}

Upvotes: 4

Views: 133

Answers (1)

ρяσѕρєя K
ρяσѕρєя K

Reputation: 132982

Use view instead of getView() in onCreateView to initialize ViewPager :

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

Upvotes: 3

Related Questions