I have problem with passing variable to fragment from my activity. I Have written something like this:
THIS IS PIECE OF MY ACTIVITY CLASS, OnCreate() function
Bundle bundle = new Bundle();
bundle.putString("key", "value");
MembersFragment membersFragment = new MembersFragment();
membersFragment.setArguments(bundle);
THIS IS PIECE OF MY FRAGMENT CLASS
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (getArguments() != null) {
uniCode = getArguments().getString("key");
textView.setText(uniCode);
}
}
And when i want to run my application, TextView is not changed, like arguments are nulls. I have tried so many ways to solve this problem and now i have no idea what is wrong. I think it may be problem with differences beetwen onCreate, onCreateView and onViewCreated, but i give up. Please help me
EDIT1:
To comunicate beetwen activity and fragment i am using something like this:
tab_layout = findViewById(R.id.tab_layout);
tab_general = findViewById(R.id.tab_general);
tab_members = findViewById(R.id.tab_members);
view_pager = findViewById(R.id.view_pager);
PagerAdapter pagerAdapter = new PagerAdapter(getSupportFragmentManager(),tab_layout.getTabCount());
view_pager.setAdapter(pagerAdapter);
tab_layout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
@Override
public void onTabSelected(TabLayout.Tab tab) {
view_pager.setCurrentItem(tab.getPosition());
}
@Override
public void onTabUnselected(TabLayout.Tab tab) {
}
@Override
public void onTabReselected(TabLayout.Tab tab) {
}
});
EDIT 3:
my activity class
public class SpecificTeamActivity extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener {
DrawerLayout drawer_layout_st;
NavigationView navigationView_st;
Toolbar toolbar2_st;
TabLayout tab_layout;
TabItem tab_general;
TabItem tab_members;
ViewPager view_pager;
String uniCode;
@SuppressLint("SetTextI18n")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_specific_team);
tab_layout = findViewById(R.id.tab_layout);
tab_general = findViewById(R.id.tab_general);
tab_members = findViewById(R.id.tab_members);
view_pager = findViewById(R.id.view_pager);
PagerAdapter pagerAdapter = new PagerAdapter(getSupportFragmentManager(),tab_layout.getTabCount());
view_pager.setAdapter(pagerAdapter);
tab_layout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
@Override
public void onTabSelected(TabLayout.Tab tab) {
view_pager.setCurrentItem(tab.getPosition());
}
@Override
public void onTabUnselected(TabLayout.Tab tab) {
}
@Override
public void onTabReselected(TabLayout.Tab tab) {
}
});
view_pager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
TabLayout.Tab tab = tab_layout.getTabAt(position);
tab.select();
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
groupTitle = findViewById(R.id.groupTitle);
uniCode = getIntent().getStringExtra("uniCode");
groupTitle.setText("Grupa: " + uniCode);
mDatabase = FirebaseDatabase.getInstance().getReference();
mAuth = FirebaseAuth.getInstance();
currentUser = mAuth.getCurrentUser();
drawer_layout_st = findViewById(R.id.drawer_layout_st);
navigationView_st = findViewById(R.id.nav_view_st);
toolbar2_st = findViewById(R.id.toolbar2_st);
navigationView_st.bringToFront();
setSupportActionBar(toolbar2_st);
ActionBarDrawerToggle actionBarDrawerToggle = new ActionBarDrawerToggle(this, drawer_layout_st, toolbar2_st, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
drawer_layout_st.addDrawerListener(actionBarDrawerToggle);
actionBarDrawerToggle.syncState();
navigationView_st.setNavigationItemSelectedListener(this);
navigationView_st.setCheckedItem(R.id.teams);
Bundle bundle = new Bundle();
bundle.putString("key", "value");
MembersFragment membersFragment = new MembersFragment();
membersFragment.setArguments(bundle);
}
@SuppressLint("NonConstantResourceId")
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
switch (item.getItemId()) {
case R.id.teams:
Intent intent = new Intent(SpecificTeamActivity.this, GroupActivity.class);
startActivity(intent);
break;
case R.id.receipts:
Intent intent1 = new Intent(SpecificTeamActivity.this, ReceiptActivity.class);
startActivity(intent1);
break;
case R.id.warranty:
Intent intent2 = new Intent(SpecificTeamActivity.this, WarrantyActivity.class);
startActivity(intent2);
break;
case R.id.stats:
Intent intent3 = new Intent(SpecificTeamActivity.this, StatsActivity.class);
startActivity(intent3);
break;
case R.id.purch_list:
Intent intent4 = new Intent(SpecificTeamActivity.this, ShoppingListActivity.class);
startActivity(intent4);
break;
case R.id.logout:
break;
}
drawer_layout_st.closeDrawer(GravityCompat.START);
return true;
}
public String getUniCode(){
return uniCode;
}
}
my fragment class code
public class MembersFragment extends Fragment {
private DatabaseReference mDatabase;
private FirebaseUser currentUser;
private FirebaseAuth mAuth;
private final List<String> membersList = new ArrayList<>();
private SpecificTeamActivity specificTeamActivity;
TextView textView;
ListView listView;
private static final String ARG_PARAM1 = "param1";
private static final String ARG_PARAM2 = "param2";
private String uniCode;
public MembersFragment() {
// Required empty public constructor
}
public static MembersFragment newInstance(String param1, String param2) {
MembersFragment fragment = new MembersFragment();
Bundle args = new Bundle();
args.putString(ARG_PARAM1, param1);
args.putString(ARG_PARAM2, param2);
fragment.setArguments(args);
return fragment;
}
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
textView = getView().findViewById(R.id.text_view_test);
textView.setText("test");
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (getArguments() != null) {
uniCode = getArguments().getString("key");
textView.setText(uniCode);
}
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment_members, container, false);
}
}
my adapter class
package com.example.ourmoney;
import androidx.annotation.NonNull;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentPagerAdapter;
public class PagerAdapter extends FragmentPagerAdapter {
private int numOfTabs;
private int selected;
public PagerAdapter(FragmentManager fm, int numOfTabs) {
super(fm,numOfTabs);
this.numOfTabs = numOfTabs;
}
@NonNull
@Override
public Fragment getItem(int position) {
switch(position){
case 0:
selected = 0;
return new GeneralFragment();
case 1:
selected = 1;
return new MembersFragment();
default:
return null;
}
}
@Override
public int getCount() {
return numOfTabs;
}
public int getSelected(){
return selected;
}
}