Ich habe Hauptaktivität, die wichtige Parameter enthält, die ich an alle Anwendungsaktivitäten übergeben muss. (Benutzername - Benutzerberechtigung - Team .. ETC).Übergabe von Parametern von Aktivität an eine andere Aktivität Fragmenten
Ich weiß, wie man das macht, außer in einer Aktivität, die drei Fragmente enthält, die mit Pager und tablayout angezeigt werden. Wie kann ich die Parameter an alle diese Fragmente übergeben? .. sollte ich es der Aktivität übergeben und es dann als zweiten Schritt an die drei Fragmente weitergeben? wenn ja, wie kann ich pass an die Fragmente in dem folgenden Code:
Zweite Aktivität Java:
public class DCODatabase extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_dcodatabase);
Toolbar toolbar = (Toolbar) findViewById(R.id.DCODatabaseToolbar);
setSupportActionBar(toolbar);
assert toolbar != null;
toolbar.setLogo(R.drawable.dco1);
//Receving bundle from main activity// --> Working
Bundle extras = getIntent().getExtras();
TabLayout tabLayout = (TabLayout) findViewById(R.id.tab);
assert tabLayout != null;
tabLayout.addTab(tabLayout.newTab().setText("General Reports"));
tabLayout.addTab(tabLayout.newTab().setText("Report Display"));
tabLayout.addTab(tabLayout.newTab().setText("New Report"));
tabLayout.setTabGravity(TabLayout.GRAVITY_FILL);
final ViewPager viewPager = (ViewPager) findViewById(R.id.pager);
final PagerAdapter adapter = new PagerAdapter
(getSupportFragmentManager(), tabLayout.getTabCount(),extras);
assert viewPager != null;
viewPager.setAdapter(adapter);
viewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout));
tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
@Override
public void onTabSelected(TabLayout.Tab tab) {
viewPager.setCurrentItem(tab.getPosition());
}
@Override
public void onTabUnselected(TabLayout.Tab tab) {
}
@Override
public void onTabReselected(TabLayout.Tab tab) {
}
});
}
}
Pager-Adapter:
public class PagerAdapter extends FragmentStatePagerAdapter{
int mNumOfTabs;
private final Bundle fragmentBundle;
public PagerAdapter(FragmentManager fm, int mNumOfTabs, Bundle bundle) {
super(fm);
this.mNumOfTabs = mNumOfTabs;
this.fragmentBundle = bundle; ---> Receving in Adapter.
}
@Override
public Fragment getItem(int position) {
switch (position) {
case 0:
DCOGeneralReports tab1 = new DCOGeneralReports();
tab1.setArguments(fragmentBundle); --> Sending to fragement
return tab1;
case 1:
DCOReportDisplay tab2 = new DCOReportDisplay();
return tab2;
case 2:
DCO_New_Report tab3 = new DCO_New_Report();
return tab3;
default:
return null;
}
}
@Override
public int getCount() {
return mNumOfTabs;
}
}
Fragment Beispiel:
public class DCOGeneralReports extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.dco_general_report, container, false);
// here the problem. (SavedInstance is null! --> Not Receving the data)
Name = savedInstanceState.getString("Name");
UserGroup = savedInstanceState.getString("UserGroup");
Team = savedInstanceState.getString("Team");
Ich bin verwirrt, wie die Seite Adapter-Klasse wird der übergebene Parameter "Value" in Putter verwendet werden? Wie kann es von der Aktivitätsklasse an die Adapterklasse weitergegeben werden? –
Ich habe Bearbeiten zu meinem answer.try es –
Dank, werde ich versuchen, dies mit der Gruppierung aller meiner Parameter in Bundle und übergeben Sie es durch Aktivität zu Adapter zu Fragmenten. Ich werde Ihnen das Ergebnis bald wissen lassen –