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.
Related videos on Youtube
Author by
Kenjin
Updated on June 04, 2022Comments
-
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 over 7 yearswhere did you get NullPointerException, on which line number, post log cat
-
V-rund Puro-hit over 7 yearspost your error log
-
-
Kenjin over 7 yearsi see it , if i put bundle to tabframentpageadapter the data out to my first tab.
-
Kenjin over 7 yearsbut the problem is the data is from anther activity lets say from cutomer activity, i i dificult to send to my TabFragmentPagerAdapter
-
Arjun saini over 7 yearsTry to Update answe
-
Kenjin over 7 yearsFATAL EXCEPTION: main Process: com.kenjin.tabfragmentapp, PID: 23716 java.lang.NullPointerException at com.kenjin.tabfragmentapp.fragment.tab1Fragment.onCreateView(tab1Fragment.java:32) at android.support.v4.app.Fragment.performCreateView(Fragment.java:1
-
Kenjin over 7 yearsCustomerActivity (send data to )->MainActivity (i solved ho to get the data by getinten)->send to tab1fragment (this is my problem)
-
Rohan Pawar over 7 yearswrite TabFragmentPagerAdapter inside mainActivity you can send any data from fragment using bundle , you need not to create separate class