P
PhoenixRising
Neues Mitglied
- 0
Hallo, ich hatte vor ein paar tagen schon mal so etwas ähnliches vermutet, nun meine Vermutung hat sich dummerweise bewahrheitet, auch wenn es zum damaligen zeitpunkt noch nicht das eigentliche Problem darstellte.
Ich habe mich bei Stackoverflow auch schon Schlau gelesen und keine gescheite lösung für das problem gefunden, hier die erklärung: Ich habe eine MainActivity mit einem TabListner und 4 Fragmenten zwischen dennen geswiped wird. Wenn ich mit aber -1/+1 Fragmente vom letzten Fragment entferne kann ich die Objekte (hauptsächlich EditText und ein paar Checkboxen) nicht mehr über den Klassenamen.Objektnamen.setText("") zurück setzen.
Nun ist die Frage wie ich entweder Instanzen von den Fragmenten zur Laufzeit behalte, oder wie ich zumindest die Values aus den Objekten verändern kann. Ausserdem werden alle eingaben beim MiniMinieren der Applikation auch gelöscht.
Hier meine MainActivity, der FragmentPagerAdapter und das ERSTE und LETZTE Fragment das ich durch Swipe:
MainActivtiy:
FragmentPagerAdapter:
Erstes Fragment, das was beim Appstart angezeigt wird:
Das Letzte Fragment das geswipt wird, hier wird durch den onClickListener versucht fast alle Elemente zuruck zusetzen:
Es ist einfach nciht die lösung alles auf Static zu setzen, dann kann ich auch nicht die Fragmente die zur Laufzeit in ihrem Lebenszyklus nicht instanzieiert sind referenzeiren. Bitte ich brauche wirklich hilfe :/
Ich habe mich bei Stackoverflow auch schon Schlau gelesen und keine gescheite lösung für das problem gefunden, hier die erklärung: Ich habe eine MainActivity mit einem TabListner und 4 Fragmenten zwischen dennen geswiped wird. Wenn ich mit aber -1/+1 Fragmente vom letzten Fragment entferne kann ich die Objekte (hauptsächlich EditText und ein paar Checkboxen) nicht mehr über den Klassenamen.Objektnamen.setText("") zurück setzen.
Nun ist die Frage wie ich entweder Instanzen von den Fragmenten zur Laufzeit behalte, oder wie ich zumindest die Values aus den Objekten verändern kann. Ausserdem werden alle eingaben beim MiniMinieren der Applikation auch gelöscht.
Hier meine MainActivity, der FragmentPagerAdapter und das ERSTE und LETZTE Fragment das ich durch Swipe:
MainActivtiy:
Code:
public class MainActivity extends FragmentActivity {
// Elemente für die Swipes und Fragments
ViewPager viewpager;
FragmentPageAdapter ft;
FragmentManager fm = getSupportFragmentManager();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
viewpager = (ViewPager) findViewById(R.id.pager);
ft = new FragmentPageAdapter(fm);
// Swipe-Elemente
final ActionBar actionbar = getActionBar();
viewpager.setAdapter(ft);
actionbar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
ActionBar.TabListener tabListener = new ActionBar.TabListener() {
@Override
public void onTabSelected(Tab tab, FragmentTransaction ft) {
viewpager.setCurrentItem(tab.getPosition());
}
@Override
public void onTabUnselected(Tab tab, FragmentTransaction ft) {
// TODO Auto-generated method stub
}
@Override
public void onTabReselected(Tab tab, FragmentTransaction ft) {
// TODO Auto-generated method stub
}
};
actionbar.addTab(actionbar.newTab().setText("Messe").setTabListener(tabListener));
actionbar.addTab(actionbar.newTab().setText("Anschrift").setTabListener(tabListener));
actionbar.addTab(actionbar.newTab().setText("Brands").setTabListener(tabListener));
actionbar.addTab(actionbar.newTab().setText("Details").setTabListener(tabListener));
viewpager.setOnPageChangeListener(new OnPageChangeListener() {
@Override
public void onPageSelected(int arg0) {
actionbar.setSelectedNavigationItem(arg0);
}
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
// TODO Auto-generated method stub
}
@Override
public void onPageScrollStateChanged(int arg0) {
// TODO Auto-generated method stub
}
});
}
}
FragmentPagerAdapter:
Code:
public class FragmentPageAdapter extends FragmentPagerAdapter {
MesseSetter messeSetter;
Anschrift anschrift;
Brands brands;
Details details;
public FragmentPageAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int arg0) {
switch (arg0) {
case 0:
return new MesseSetter();
case 1:
return new Anschrift();
case 2:
return new Brands();
case 3:
return new Details();
}
return null;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return 4;
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
Fragment createdFragment = (Fragment) super.instantiateItem(container, position);
switch (position) {
case 0:
messeSetter = (MesseSetter) createdFragment;
break;
case 1:
anschrift = (Anschrift) createdFragment;
break;
case 2:
brands = (Brands) createdFragment;
break;
case 3:
details = (Details) createdFragment;
break;
}
return createdFragment;
}
}
Erstes Fragment, das was beim Appstart angezeigt wird:
Code:
public class MesseSetter extends Fragment {
// EditTexts
EditText e_messeName;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View messeLayout = inflater.inflate(R.layout.messesetter, container, false);
// Elemente - Deklaration
e_messeName = (EditText) messeLayout.findViewById(R.id.input_messename);
e_messeName.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
// TODO Auto-generated method stub
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
// TODO Auto-generated method stub
}
@Override
public void afterTextChanged(Editable s) {
getActivity().getActionBar()
.setTitle(getActivity().getTitle() + " - " + e_messeName.getText().toString());
}
});
return messeLayout;
}
}
Das Letzte Fragment das geswipt wird, hier wird durch den onClickListener versucht fast alle Elemente zuruck zusetzen:
Code:
public class Details extends Fragment {
EditText e_notizen;
ImageButton btn_speichern;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
final View detailsLaylout = inflater.inflate(R.layout.details, container, false);
btn_speichern = (ImageButton) detailsLaylout .findViewById(R.id.button_speichern);
btn_speichern.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
MesseSetter.e_messeName.setText("");
Anschrift.e_aufgenommenVon.setText("");
Brands.e_adm.setText("");
e_notizen.setText("");
}
});
return detailsLaylout;
}
}
}
Es ist einfach nciht die lösung alles auf Static zu setzen, dann kann ich auch nicht die Fragmente die zur Laufzeit in ihrem Lebenszyklus nicht instanzieiert sind referenzeiren. Bitte ich brauche wirklich hilfe :/