Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/206.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
Android 为什么在Tablayout中实现通信接口时不添加片段_Android_Android Studio_Android Fragments - Fatal编程技术网

Android 为什么在Tablayout中实现通信接口时不添加片段

Android 为什么在Tablayout中实现通信接口时不添加片段,android,android-studio,android-fragments,Android,Android Studio,Android Fragments,我以前用的是有碎片的表格。当我使用activity中的接口调用片段时 我也无法访问Listview实例和getActivity(),这两个实例都产生空引用,我尝试了 使用isAdded方法进行测试时,从接口调用时不会添加片段本身 处方活动调用的处方历史片段 ListView listView; CustomAdapter adapter; @Nullable @Override public View onCreateView(@NonNull LayoutInflater

我以前用的是有碎片的表格。当我使用activity中的接口调用片段时

我也无法访问Listview实例和getActivity(),这两个实例都产生空引用,我尝试了

使用isAdded方法进行测试时,从接口调用时不会添加片段本身

处方活动调用的处方历史片段

 ListView listView;

CustomAdapter adapter;
@Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View retView = inflater.inflate(R.layout.fragment_history, container, false);



        if (retView != null) {
            listView = retView.findViewById(R.id.listView); 

            adapter = new CustomAdapter;

        }


        return retView;




    }
private void setupViewPager(ViewPager viewPager) {
         adapter = new ViewPagerAdapter(getSupportFragmentManager());
        PrescriptionFragment prescriptionFragment = new PrescriptionFragment();
添加到活动中

片段中使用的Xml文件

处方\历史片段处方片段=新处方\历史片段()

adapter.addFragment(处方片段,“处方”);
adapter.addFragment(处方\历史片段,“历史”);
viewPager.setAdapter(适配器);
}
类ViewPagerAdapter扩展了FragmentPagerAdapter{
私有列表MFFragmentList=newArrayList();
私有最终列表MFFragmentTitleList=new ArrayList();
公共视图页面编辑器(碎片管理器){
高级经理;
}
@凌驾
公共片段getItem(int位置){
返回MFFragmentList.get(位置);
}
@凌驾
public int getCount(){
返回MFFragmentList.size();
}
public void addFragment(片段片段,字符串标题){
添加(片段);
MFFragmentTitleList.add(标题);
}
@凌驾
公共字符序列getPageTitle(int位置){
返回MFFragmentTitleList.get(位置);
}
public void removeFragment(片段片段,int位置){
MFFragmentList.移除(位置);
MFFragmentTitleList.移除(位置);
}
}
@凌驾
输入病人(int patientID)的公共无效信息{
处方\住院患者的历史片段(patientID);
}

上面没有与您的故事相匹配的代码,请尝试编写完整的代码,以便我们提供帮助。@Harpreet您需要哪些代码、活动、方法或片段的调用方式代码长度将取决于如何在活动中添加和调用片段。@Harpreet查看更新的代码上面没有与您的故事相匹配的代码,请尝试编写完整的代码,以便我们提供帮助。@Harpreet您需要哪些代码、活动、方法或片段的调用方式。代码长度将取决于如何在活动中添加和调用片段。@Harpreet查看更新的代码
@Override
public void onInputPatient(int patientID) {


    Log.d("Patient", "onInputPatient: Recieved" + patientID );

    if(isAdded()){

        Log.d("Tag", "onInputPatient:Attached ");
    }else {
        Log.d("Tag", "onInputPatient: NotAdded"); // called
    }

 //accessing listview here also produces null reference error

   listview.setAdapter(adapter);
}
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:layout_behavior="@string/appbar_scrolling_view_behavior"
    tools:context=".Activities.Activities.PrescriptionActivity">

    <LinearLayout
        android:id="@+id/history_id"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        app:layout_behavior="@string/appbar_scrolling_view_behavior"
        tools:context=".Activities.Activities.PrescriptionActivity"
        >



        <ListView
            android:id="@+id/listView"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_marginTop="5dp"
            android:visibility="visible"
            android:nestedScrollingEnabled="true"
            />
    </LinearLayout>
</LinearLayout>
private void setupViewPager(ViewPager viewPager) {
         adapter = new ViewPagerAdapter(getSupportFragmentManager());
        PrescriptionFragment prescriptionFragment = new PrescriptionFragment();
        adapter.addFragment(prescriptionFragment, "PRESCRIPTION");

        adapter.addFragment(prescription_historyFragment, "HISTORY");
        viewPager.setAdapter(adapter);
    }

    class ViewPagerAdapter extends FragmentPagerAdapter {
        private  List<Fragment> mFragmentList = new ArrayList<>();
        private final List<String> mFragmentTitleList = new ArrayList<>();

        public ViewPagerAdapter(FragmentManager manager) {
            super(manager);
        }

        @Override
        public Fragment getItem(int position) {
            return mFragmentList.get(position);
        }

        @Override
        public int getCount() {
            return mFragmentList.size();
        }

        public void addFragment(Fragment fragment, String title) {
            mFragmentList.add(fragment);
            mFragmentTitleList.add(title);
        }

        @Override
        public CharSequence getPageTitle(int position) {
            return mFragmentTitleList.get(position);
        }


        public void removeFragment(Fragment fragment, int position) {
            mFragmentList.remove(position);
            mFragmentTitleList.remove(position);
        }


    }

@Override
    public void onInputPatient(int patientID) {


    prescription_historyFragment.onInputPatient(patientID);



    }