Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 更改ViewPager内显示的片段_Java_Android_Android Fragments_Interface_Android Viewpager - Fatal编程技术网

Java 更改ViewPager内显示的片段

Java 更改ViewPager内显示的片段,java,android,android-fragments,interface,android-viewpager,Java,Android,Android Fragments,Interface,Android Viewpager,我有一个显示片段的ViewPager:SearchFragment,FriendFragment。我正在努力做的是将SearchFragment更改为ChatFragment 有很多反馈,但我有一些困难,使任何这些解决方案的工作 我认为我创建接口的方式可能有问题,我在使它作为SearchActivity.newInstance(new MyListener{…}) 我现在已经到了该做什么的地步 java.lang.NullPointerException:尝试调用虚拟方法 'android.su

我有一个显示片段的ViewPager:SearchFragment,FriendFragment。我正在努力做的是将SearchFragment更改为ChatFragment

有很多反馈,但我有一些困难,使任何这些解决方案的工作

我认为我创建接口的方式可能有问题,我在使它作为
SearchActivity.newInstance(new MyListener{…})

我现在已经到了该做什么的地步

java.lang.NullPointerException:尝试调用虚拟方法 'android.support.v4.app.FragmentTransaction 空值上的android.support.v4.app.FragmentManager.beginTransaction() 对象引用 在 com.example.ashaneen.firebaseapp.adapters.MainScreenAdapter$1.onFragmentChange(MainScreenAdapter.java:44) 在 com.example.ashaneen.firebaseapp.fragments.SearchFragment$4.onComplete(SearchFragment.java:132)

MainScreenAdapter.class

public class MainScreenAdapter extends FragmentPagerAdapter implements SearchFragment.MyListener {

    private static final String TAG = "MainScreenAdapter";

    private FragmentManager fragmentManager;
    private Fragment fragment1;


    public MainScreenAdapter(FragmentManager fm) {
        super(fm);
    }



    @Override
    public Fragment getItem(int position)
    {
        switch (position)
        {
            case 0:
                if (fragment1 == null)
                {
                    fragment1 = SearchFragment.newInstance(new SearchFragment.MyListener() {
                        @Override
                        public void onFragmentChange() {
                            fragmentManager.beginTransaction().remove(fragment1).commit();
                            fragment1 = ChatFragment.newInstance();
                            notifyDataSetChanged();
                        }
                    });
                }
                return fragment1;
            case 1:
                return new FriendsFragment();
            default:
                return new ChatFragment();
        }
    }

    @Override
    public int getItemPosition(@NonNull Object object) {
        return POSITION_NONE;
    }
    @Override
    public void onFragmentChange() {

    }
SearchFragment.class

 public class SearchFragment extends android.support.v4.app.Fragment  {

        public SearchFragment() {
        }

        private String TAG = "Profile2Fragment";

        public interface MyListener
        {
             void onFragmentChange();
        }

        static MyListener myListener = new MyListener() {
            public void onFragmentChange() {

            }
        };

    public static SearchFragment newInstance(MyListener myListener) {

       SearchFragment.myListener = myListener;
       return new SearchFragment();
    }
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_search, container, false);

        button = view.findViewById(R.id.btn_search);
        waitingRoomReference = db.collection("awaiting_room");




        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) 

{
                    myListener.onFragmentChange();
                }
            }
        });

                return view;
            }
试着改变这个

public MainScreenAdapter(FragmentManager fm) {
    super(fm);
}


看起来你的碎片管理器是空的。连续第二天和它战斗,你就这样进来了。。。非常感谢你,兰扬:不用谢。日志上说你只需要正确阅读就可以了。
public MainScreenAdapter(FragmentManager fm) {
    super(fm);
    fragmentManager = fm;
}