将数据从Activity发送到Tab Fragment

Ken*_*jin 3 tabs android android-fragments

我的代码有一个简单的问题,我在这个网站搜索但仍然没有找到最好的答案,我将数据发送到我的选项卡片段,这是我的代码

我的Activity类

public class MainActivity extends AppCompatActivity 

    private ViewPager pager;
    private Toolbar toolbar;
    private TabLayout tabs;

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


        pager=(ViewPager) findViewById(R.id.pager);
        tabs=(TabLayout) findViewById(R.id.tabs);

        pager.setAdapter(new TabFragmentPagerAdapter(getSupportFragmentManager()));
        tabs.setupWithViewPager(pager);
        tabs.setTabGravity(TabLayout.GRAVITY_FILL);

        Bundle bundle = new Bundle();
        bundle.putString("edttext", "data From Activity");
        // set Fragmentclass Arguments
        tab1Fragment fragobj = new tab1Fragment();
        fragobj.setArguments(bundle);

    }
}
Run Code Online (Sandbox Code Playgroud)

这是我的tab1类

public class tab1Fragment extends Fragment 

    public tab1Fragment() {
        // Required empty public constructor
    }


    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment

        View view= inflater.inflate(R.layout.fragment_tab1, container, false);
        TextView tes=(TextView) view.findViewById(R.id.testtab1);
        String strtext = getArguments().getString("edttext");

        tes.setText("tes :"+ strtext);
        return  view;
    }
}
Run Code Online (Sandbox Code Playgroud)

这是我的页面片段适配器

public class TabFragmentPagerAdapter extends FragmentPagerAdapter 

    String[] title = new String[]{
            "Tab 1", "Tab 2", "Tab 3"
    };

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

    @Override
    public Fragment getItem(int position){
        Fragment fragment=null;
        switch (position){
            case 0:
                fragment=new tab1Fragment();
                break;
            case 1:
                fragment=new tab2Fragment();
                break;
            case 2:
                fragment=new tab3Fragment();
                break;
            default:
                fragment=null;
                break;
        }
        return  fragment;
    }
    @Override
    public  CharSequence getPageTitle(int position){
        return  title[position];
    }
    @Override
    public  int getCount(){
        return  title.length;
    }
}
Run Code Online (Sandbox Code Playgroud)

当我运行错误

显示java.lang.NullPointerException

请帮忙

Roh*_*war 5

在你的AppCompatActivity发送

tab1Fragment fragobj = new tab1Fragment();
fragobj.setArguments(bundle);
Run Code Online (Sandbox Code Playgroud)

但在你的 TabFragmentPagerAdapter

fragment=new tab1Fragment();
            break;
Run Code Online (Sandbox Code Playgroud)

它有空参数

内部开关

switch (position){
    case 0:
      fragment=new tab1Fragment();               
      Bundle bundle = new Bundle();
      bundle.putString("edttext", "data From Activity");
      fragment.setArguments(bundle);
    break;
Run Code Online (Sandbox Code Playgroud)