Send data From Activity to Tab Fragment

14,638

Solution 1

In your AppCompatActivity you have send

tab1Fragment fragobj = new tab1Fragment();
fragobj.setArguments(bundle);

but in your TabFragmentPagerAdapter

fragment=new tab1Fragment();
            break;

it has null arguments

inside switch

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

Solution 2

May be you are getting NullPointerException because your fragment getting initialised again inside getItem without argument.

Try this way.

@Override
public Fragment getItem(int position){
    Fragment fragment=null;

    Bundle bundle = new Bundle();
    bundle.putString("edttext", "data From Activity");

    switch (position){
        case 0:
            fragment=new tab1Fragment();
            fragment.setArguments(bundle);
            break;
        case 1:
            fragment=new tab2Fragment();
            break;
        case 2:
            fragment=new tab3Fragment();
            break;
        default:
            fragment=null;
            break;
    }
    return  fragment;
}

Note : make sure you are importing same versions of Fragment in both MainActivity and tab1Fragment.

Share:
14,638

Related videos on Youtube

Kenjin
Author by

Kenjin

Updated on June 04, 2022

Comments

  • Kenjin
    Kenjin almost 2 years

    i have a lite problem with my code, i was search in this site but still not found the best answer i will send data to my tab fragment, this my code

    My Activity class

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

    and this my tab1 class

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

    and this my page fragment adapter

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

    when i run error

    java.lang.NullPointerException

    Please Help

    • Rohan Pawar
      Rohan Pawar over 7 years
      where did you get NullPointerException, on which line number, post log cat
    • V-rund Puro-hit
      V-rund Puro-hit over 7 years
      post your error log
  • Kenjin
    Kenjin over 7 years
    i see it , if i put bundle to tabframentpageadapter the data out to my first tab.
  • Kenjin
    Kenjin over 7 years
    but the problem is the data is from anther activity lets say from cutomer activity, i i dificult to send to my TabFragmentPagerAdapter
  • Arjun saini
    Arjun saini over 7 years
    Try to Update answe
  • Kenjin
    Kenjin over 7 years
    FATAL EXCEPTION: main Process: com.kenjin.tabfragmentapp, PID: 23716 java.lang.NullPointerException at com.kenjin.tabfragmentapp.fragment.tab1Fragment.onCreateView‌​(tab1Fragment.java:3‌​2) at android.support.v4.app.Fragment.performCreateView(Fragment.j‌​ava:1
  • Kenjin
    Kenjin over 7 years
    CustomerActivity (send data to )->MainActivity (i solved ho to get the data by getinten)->send to tab1fragment (this is my problem)
  • Rohan Pawar
    Rohan Pawar over 7 years
    write TabFragmentPagerAdapter inside mainActivity you can send any data from fragment using bundle , you need not to create separate class