Java (Viewpager适配器)getSupportFragmentManager()返回NULL

Java (Viewpager适配器)getSupportFragmentManager()返回NULL,java,android,fragment,Java,Android,Fragment,我想做滑动标签,我被卡住了: Main.java import android.app.ActionBar; import android.app.ActionBar.Tab; import android.app.ActionBar.TabListener; import android.app.FragmentTransaction; import android.os.Bundle; import android.support.v4.app.Fragment; import androi

我想做滑动标签,我被卡住了:

Main.java

import android.app.ActionBar;
import android.app.ActionBar.Tab;
import android.app.ActionBar.TabListener;
import android.app.FragmentTransaction;
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.support.v7.app.ActionBarActivity;
import android.view.Window;


public class Main extends ActionBarActivity  implements TabListener, android.support.v7.app.ActionBar.TabListener {

    android.support.v7.app.ActionBar actionbar;
    ViewPager viewpager;

    @Override
    protected void onCreate(Bundle arg0) {
        super.onCreate(arg0);
        setContentView(R.layout.activity_main);



        viewpager = (ViewPager)findViewById(R.id.pager);
        viewpager.setAdapter(new FragmentAdapter(getSupportFragmentManager()));
        actionbar = getSupportActionBar();
        actionbar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);

        android.support.v7.app.ActionBar.Tab tab_1 = actionbar.newTab();
        android.support.v7.app.ActionBar.Tab tab_2 = actionbar.newTab();

        tab_1.setText("Tab 1");
        tab_2.setText("Tab 2");

        tab_1.setTabListener(this);
        tab_2.setTabListener(this);

        actionbar.addTab(tab_1);
        actionbar.addTab(tab_2);
    }


    @Override
    public void onTabReselected(Tab tab, FragmentTransaction ft) {
        // TODO Auto-generated method stub

    }


    @Override
    public void onTabSelected(Tab tab, FragmentTransaction ft) {
        // TODO Auto-generated method stub

    }


    @Override
    public void onTabUnselected(Tab tab, FragmentTransaction ft) {
        // TODO Auto-generated method stub

    }


    @Override
    public void onTabReselected(android.support.v7.app.ActionBar.Tab arg0,
            android.support.v4.app.FragmentTransaction arg1) {
        // TODO Auto-generated method stub

    }


    @Override
    public void onTabSelected(android.support.v7.app.ActionBar.Tab arg0,
            android.support.v4.app.FragmentTransaction arg1) {
        // TODO Auto-generated method stub

    }


    @Override
    public void onTabUnselected(android.support.v7.app.ActionBar.Tab arg0,
            android.support.v4.app.FragmentTransaction arg1) {
        // TODO Auto-generated method stub

    }


}



class FragmentAdapter extends FragmentPagerAdapter{

    public FragmentAdapter(FragmentManager fm) {
        super(fm);
        // TODO Auto-generated constructor stub
    }

    @Override
    public Fragment getItem(int arg0) {
        // TODO Auto-generated method stub
        Fragment frag=null;

        if(arg0 == 0)
        {
            frag = new TAB_1();
        }

        if(arg0 == 1)
        {
            frag = new TAB_2();
        }

        return null;
    }

    @Override
    public int getCount() {
        // TODO Auto-generated method stub
        return 2;
    }



}
activity_main.xml

<android.support.v4.view.ViewPager 
    xmlns:android="http://schemas.android.com/apk/res/android"
   android:id="@+id/pager"
   android:layout_height = "match_parent"
   android:layout_width="match_parent" 

></android.support.v4.view.ViewPager>

提前谢谢

getItem
必须返回
片段的实例,而不是null。将其更改为:

@Override
public Fragment getItem(int arg0) {
    // TODO Auto-generated method stub
    Fragment frag=null;
    if (arg0 == 0) {
        frag = new TAB_1();
    } else if(arg0 == 1) {
        frag = new TAB_2();
    }
    return frag;
}

getItem
必须返回
片段的实例,而不是null。将其更改为:

@Override
public Fragment getItem(int arg0) {
    // TODO Auto-generated method stub
    Fragment frag=null;
    if (arg0 == 0) {
        frag = new TAB_1();
    } else if(arg0 == 1) {
        frag = new TAB_2();
    }
    return frag;
}

@Blackbelt是绝对正确的…因为您从getItem方法返回null…您需要从它返回片段的引用

@Override
public Fragment getItem(int arg0) {
    // TODO Auto-generated method stub
    Fragment frag=null;
    if (arg0 == 0) {
        frag = new TAB_1();
    } else if(arg0 == 1) {
        frag = new TAB_2();
    }
    return frag;
}
[


按照此链接获取有关您试图实现的目标的更多信息。

@Blackbelt绝对正确…因为您从getItem方法返回null…您需要从它返回片段的引用

@Override
public Fragment getItem(int arg0) {
    // TODO Auto-generated method stub
    Fragment frag=null;
    if (arg0 == 0) {
        frag = new TAB_1();
    } else if(arg0 == 1) {
        frag = new TAB_2();
    }
    return frag;
}
[


按照此链接获取有关您试图实现的目标的更多信息。

只有在使用appcompat-v7-support库并扩展AppCompatActivity时,更改为getFragmentManager()getSupportFragmentManager()才有效仅当您使用appcompat-v7-support库并扩展AppCompatActivity时才有效。更改为getFragmentManager()getSupportFragmentManager()仅当您使用appcompat-v7-support库并扩展AppCompatActivity时才有效。