Layout Probleme unter ICS
-
-
Vll. fängst du den Klick einfach ab
Ansonsten tritt es auch bei anderen Versionen auf? -
Zitat
Vll. fängst du den Klick einfach ab
Ansonsten tritt es auch bei anderen Versionen auf?Dieser bug tritt nur unter ICS auf 4.1+ funktioniert es alles. Könntest du mir ein Bsp. Geben wie ich den klick abfangen kann?
-
Einfach eine globale Variable in der Activity einfügen, die bekommt dann die NavItem-ID, die selektiert ist.
Dann brauchst du in der Unterscheidung welches Fragment geladen wird nur überprüfen, ob es schon geladen wurde -
Zitat
Einfach eine globale Variable in der Activity einfügen, die bekommt dann die NavItem-ID, die selektiert ist.
Dann brauchst du in der Unterscheidung welches Fragment geladen wird nur überprüfen, ob es schon geladen wurdeIch steh glaub ich grad aufm Schlauch kannst du ein bisschen genauer was schreiben Bitte
-
Hab leider in Moment keinen Beispielcode parat.
Eine globale Int-Variable einfügen, kriegst du wohl hin.
In der Methode für den NavDrawer-Klick fügst du nach dem Select einfach eine IF-Abfrage ein, ob die globale Variable mit der angeklickten ID gleich ist. Dann brauchst du nicht neu laden. Ansonsten lädst du das Fragment.
Hoffe das ist verständlicher -
Zitat
Hab leider in Moment keinen Beispielcode parat.
Eine globale Int-Variable einfügen, kriegst du wohl hin.
In der Methode für den NavDrawer-Klick fügst du nach dem Select einfach eine IF-Abfrage ein, ob die globale Variable mit der angeklickten ID gleich ist. Dann brauchst du nicht neu laden. Ansonsten lädst du das Fragment.
Hoffe das ist verständlicherDanke jetzt hab ich es verstanden
-
Ist das so korrekt?
Weil es nicht funktioniert
Java
Alles anzeigenprivate class DrawerItemClickListener implements ListView.OnItemClickListener { private int ID; @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { selectItem(position); if (ID == id) { //noch mal das hier rein --> selectItem(position); ? } } }
-
Du musst das selectItem schon in die IF-Bedingung reinpacken
Ansonsten lädt die App den Menüpunkt und dann überprüft sie erst, ob sie schon vorhanden war...
Außerdem musst du die aktuelle ID danach noch setzen. -
Du musst das selectItem schon in die IF-Bedingung reinpacken
Ansonsten lädt die App den Menüpunkt und dann überprüft sie erst, ob sie schon vorhanden war...
Außerdem musst du die aktuelle ID danach noch setzen.das hört sich grad blöd an aber wie setz ich die aktuelle id mit return?
-
-
Java
Alles anzeigenprivate class DrawerItemClickListener implements ListView.OnItemClickListener { private long ID; @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { if (ID == id) { selectItem(position); } ID = id; } }
So sieht es aus aber funktioniert trotzdem nicht jetzt springt er nicht zu den anderen und beim ersten wird es trotzdem wieder leer
-
Das Problem ist, dass beim ersten Mal die ID noch null ist. Setze die ID einfach gleich dem Starteintrag. Dann dürfte es klappen. Bzw. sollte es jetzt auch schon ab dem zweiten Mal klappen, oder?
-
Das Problem ist, dass beim ersten Mal die ID noch null ist. Setze die ID einfach gleich dem Starteintrag. Dann dürfte es klappen. Bzw. sollte es jetzt auch schon ab dem zweiten Mal klappen, oder?
Ja es klappt beim zweiten mal aber trotzdem geht dann nach wiederholten drücken das layout wieder auf leer.
-
Was meinst du mit leer?
-
-
Normal sollte es nichts machen...
Mhmmm...
Kannst du vll. noch ein bisschen mehr Code posten? Vorallem wo du die Seiten änderst. -
Der ganze activity code füge ich dir mal unten hin und brauchst du den adapter auch?
Java
Alles anzeigen// Declare Variable DrawerLayout mDrawerLayout; ListView mDrawerList; ActionBarDrawerToggle mDrawerToggle; MenuListAdapter mMenuAdapter; String[] title; //String[] subtitle; int[] icon; Fragment about = new About(); Fragment maps = new Maps(); Fragment home1 = new Home(); Fragment weather = new Weather(); Fragment catch_session = new Catch_session(); Fragment catch_book = new Catch_book(); Fragment tips_tricks = new Tips(); Fragment test = new Test(); @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.drawer_main); if(getResources().getBoolean(R.bool.portrait_only)){ setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); } else{ setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); } // Generate title title = new String[] { "Startseite", "Angelpl\u00E4tze", "Wetter", "Schonzeiten", "Fangbuch", "Tipps \u0026 Tricks", "\u00DCber", "Test1"}; //, "Einstellungen", "Tipps \u0026 Tricks" // Generate subtitle //subtitle = new String[] { "","Wer hat gemacht?", "Ihre Einstellungen"}; // Generate icon icon = new int[] {R.drawable.action_home, R.drawable.action_location, R.drawable.collections_cloud, R.drawable.action_catchsessions, R.drawable.action_catchbook, R.drawable.action_help, R.drawable.action_about, R.drawable.action_about}; //, R.drawable.action_settings // Locate DrawerLayout in drawer_main.xml mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); // Locate ListView in drawer_main.xml mDrawerList = (ListView) findViewById(R.id.left_drawer); // Set a custom shadow that overlays the main content when the drawer // opens mDrawerLayout.setDrawerShadow(R.drawable.drawer_shadow, GravityCompat.START); // Pass results to MenuListAdapter Class mMenuAdapter = new MenuListAdapter(this, title, icon); //subtitle, // Set the MenuListAdapter to the ListView mDrawerList.setAdapter(mMenuAdapter); // Capture button clicks on side menu mDrawerList.setOnItemClickListener(new DrawerItemClickListener()); // Enable ActionBar app icon to behave as action to toggle nav drawer getActionBar().setHomeButtonEnabled(true); getActionBar().setDisplayHomeAsUpEnabled(true); // ActionBarDrawerToggle ties together the the proper interactions // between the sliding drawer and the action bar app icon mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, R.drawable.ic_drawer, R.string.drawer_open, R.string.drawer_close) { public void onDrawerClosed(View view) { // TODO Auto-generated method stub super.onDrawerClosed(view); } public void onDrawerOpened(View drawerView) { // TODO Auto-generated method stub super.onDrawerOpened(drawerView); } }; mDrawerLayout.setDrawerListener(mDrawerToggle); if (savedInstanceState == null) { selectItem(0); } } @Override public boolean onOptionsItemSelected(MenuItem item) { if (item.getItemId() == android.R.id.home) { if (mDrawerLayout.isDrawerOpen(mDrawerList)) { mDrawerLayout.closeDrawer(mDrawerList); } else { mDrawerLayout.openDrawer(mDrawerList); } } return super.onOptionsItemSelected(item); } // The click listener for ListView in the navigation drawer private class DrawerItemClickListener implements ListView.OnItemClickListener { private long ID; @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { if (ID == id) { selectItem(position); } ID = id; } } private void selectItem(int position) { FragmentManager fm = getFragmentManager(); FragmentTransaction ft = fm.beginTransaction(); // Locate Position switch (position) { case 0: ft.replace(R.id.content_frame, home1); break; case 1: ft.replace(R.id.content_frame, maps); break; case 2: ft.replace(R.id.content_frame, weather); break; case 3: ft.replace(R.id.content_frame, catch_session); break; case 4: ft.replace(R.id.content_frame, catch_book); break; case 5: ft.replace(R.id.content_frame, tips_tricks); break; case 6: ft.replace(R.id.content_frame, about); break; case 7: ft.replace(R.id.content_frame, test); /*case 7: ft.replace(R.id.content_frame, settings); break;*/ } ft.commit(); mDrawerList.setItemChecked(position, true); // Close drawer mDrawerLayout.closeDrawer(mDrawerList); }
-
Schon was rausgefunden Kogoro-Christopher ?
-
Normalerweise sollte das alles so gehen
Ich weiß echt nicht, wo der Fehler ist...
Probier einfach mal die ID durch die Position zu tauschen. Vll. klappt es ja
Jetzt mitmachen!
Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!