Layout Probleme unter ICS

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Layout Probleme unter ICS

    Hallo Mitglieder ich hab grad Probleme mit meiner App unter ICS :(

    Wenn ich ein Layout auswähle und ausversehen noch einmal draufklicke bekomm ich ne weiße Seite :/

    Im Anhang sind 2 Bilder und wem es nicht reicht kann hier die App laden
    Bilder
    • Screenshot_2013-10-25-16-13-18.png

      53,11 kB, 1.280×800, 431 mal angesehen
    • Screenshot_2013-10-25-16-13-26.png

      45,7 kB, 1.280×800, 347 mal angesehen
  • 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 ;)
    MfG,
    Christopher

    Eine gewisses Maß an Freundlichkeit kann man auch von Menschen im Internet erwarten.
    Das Forum basiert komplett auf der Freiwilligkeit ihrer Nutzer und diese sollen sich wohlfühlen! Daher seid bitte freundlich. Danke
  • 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 ;)


    Ich 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 ;)
    MfG,
    Christopher

    Eine gewisses Maß an Freundlichkeit kann man auch von Menschen im Internet erwarten.
    Das Forum basiert komplett auf der Freiwilligkeit ihrer Nutzer und diese sollen sich wohlfühlen! Daher seid bitte freundlich. Danke
  • 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 ;)


    Danke jetzt hab ich es verstanden :D :thumbup:
  • Ist das so korrekt?

    Weil es nicht funktioniert

    Java-Quellcode

    1. private class DrawerItemClickListener implements
    2. ListView.OnItemClickListener {
    3. private int ID;
    4. @Override
    5. public void onItemClick(AdapterView<?> parent, View view, int position,
    6. long id) {
    7. selectItem(position);
    8. if (ID == id) {
    9. //noch mal das hier rein --> selectItem(position); ?
    10. }
    11. }
    12. }
    Alles anzeigen
  • 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.
    MfG,
    Christopher

    Eine gewisses Maß an Freundlichkeit kann man auch von Menschen im Internet erwarten.
    Das Forum basiert komplett auf der Freiwilligkeit ihrer Nutzer und diese sollen sich wohlfühlen! Daher seid bitte freundlich. Danke
  • Kogoro schrieb:

    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? :-/
  • Kogoro-Christopher schrieb:

    Einfach:

    Java-Quellcode

    1. ID = id;

    nach der IF-Bed.


    Java-Quellcode

    1. private class DrawerItemClickListener implements
    2. ListView.OnItemClickListener {
    3. private long ID;
    4. @Override
    5. public void onItemClick(AdapterView<?> parent, View view, int position,
    6. long id) {
    7. if (ID == id) {
    8. selectItem(position);
    9. }
    10. ID = id;
    11. }
    12. }
    Alles anzeigen


    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?
    MfG,
    Christopher

    Eine gewisses Maß an Freundlichkeit kann man auch von Menschen im Internet erwarten.
    Das Forum basiert komplett auf der Freiwilligkeit ihrer Nutzer und diese sollen sich wohlfühlen! Daher seid bitte freundlich. Danke
  • Kogoro-Christopher schrieb:

    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.
  • Normal sollte es nichts machen...
    Mhmmm...
    Kannst du vll. noch ein bisschen mehr Code posten? Vorallem wo du die Seiten änderst.
    MfG,
    Christopher

    Eine gewisses Maß an Freundlichkeit kann man auch von Menschen im Internet erwarten.
    Das Forum basiert komplett auf der Freiwilligkeit ihrer Nutzer und diese sollen sich wohlfühlen! Daher seid bitte freundlich. Danke
  • Der ganze activity code füge ich dir mal unten hin und brauchst du den adapter auch?

    Java-Quellcode

    1. // Declare Variable
    2. DrawerLayout mDrawerLayout;
    3. ListView mDrawerList;
    4. ActionBarDrawerToggle mDrawerToggle;
    5. MenuListAdapter mMenuAdapter;
    6. String[] title;
    7. //String[] subtitle;
    8. int[] icon;
    9. Fragment about = new About();
    10. Fragment maps = new Maps();
    11. Fragment home1 = new Home();
    12. Fragment weather = new Weather();
    13. Fragment catch_session = new Catch_session();
    14. Fragment catch_book = new Catch_book();
    15. Fragment tips_tricks = new Tips();
    16. Fragment test = new Test();
    17. @Override
    18. public void onCreate(Bundle savedInstanceState) {
    19. super.onCreate(savedInstanceState);
    20. setContentView(R.layout.drawer_main);
    21. if(getResources().getBoolean(R.bool.portrait_only)){
    22. setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
    23. }
    24. else{
    25. setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
    26. }
    27. // Generate title
    28. title = new String[] { "Startseite", "Angelpl\u00E4tze", "Wetter", "Schonzeiten", "Fangbuch", "Tipps \u0026 Tricks", "\u00DCber", "Test1"}; //, "Einstellungen", "Tipps \u0026 Tricks"
    29. // Generate subtitle
    30. //subtitle = new String[] { "","Wer hat gemacht?", "Ihre Einstellungen"};
    31. // Generate icon
    32. icon = new int[] {R.drawable.action_home, R.drawable.action_location, R.drawable.collections_cloud, R.drawable.action_catchsessions,
    33. R.drawable.action_catchbook, R.drawable.action_help, R.drawable.action_about, R.drawable.action_about}; //, R.drawable.action_settings
    34. // Locate DrawerLayout in drawer_main.xml
    35. mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
    36. // Locate ListView in drawer_main.xml
    37. mDrawerList = (ListView) findViewById(R.id.left_drawer);
    38. // Set a custom shadow that overlays the main content when the drawer
    39. // opens
    40. mDrawerLayout.setDrawerShadow(R.drawable.drawer_shadow,
    41. GravityCompat.START);
    42. // Pass results to MenuListAdapter Class
    43. mMenuAdapter = new MenuListAdapter(this, title, icon); //subtitle,
    44. // Set the MenuListAdapter to the ListView
    45. mDrawerList.setAdapter(mMenuAdapter);
    46. // Capture button clicks on side menu
    47. mDrawerList.setOnItemClickListener(new DrawerItemClickListener());
    48. // Enable ActionBar app icon to behave as action to toggle nav drawer
    49. getActionBar().setHomeButtonEnabled(true);
    50. getActionBar().setDisplayHomeAsUpEnabled(true);
    51. // ActionBarDrawerToggle ties together the the proper interactions
    52. // between the sliding drawer and the action bar app icon
    53. mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout,
    54. R.drawable.ic_drawer, R.string.drawer_open,
    55. R.string.drawer_close) {
    56. public void onDrawerClosed(View view) {
    57. // TODO Auto-generated method stub
    58. super.onDrawerClosed(view);
    59. }
    60. public void onDrawerOpened(View drawerView) {
    61. // TODO Auto-generated method stub
    62. super.onDrawerOpened(drawerView);
    63. }
    64. };
    65. mDrawerLayout.setDrawerListener(mDrawerToggle);
    66. if (savedInstanceState == null) {
    67. selectItem(0);
    68. }
    69. }
    70. @Override
    71. public boolean onOptionsItemSelected(MenuItem item) {
    72. if (item.getItemId() == android.R.id.home) {
    73. if (mDrawerLayout.isDrawerOpen(mDrawerList)) {
    74. mDrawerLayout.closeDrawer(mDrawerList);
    75. } else {
    76. mDrawerLayout.openDrawer(mDrawerList);
    77. }
    78. }
    79. return super.onOptionsItemSelected(item);
    80. }
    81. // The click listener for ListView in the navigation drawer
    82. private class DrawerItemClickListener implements
    83. ListView.OnItemClickListener {
    84. private long ID;
    85. @Override
    86. public void onItemClick(AdapterView<?> parent, View view, int position,
    87. long id) {
    88. if (ID == id) {
    89. selectItem(position);
    90. }
    91. ID = id;
    92. }
    93. }
    94. private void selectItem(int position) {
    95. FragmentManager fm = getFragmentManager();
    96. FragmentTransaction ft = fm.beginTransaction();
    97. // Locate Position
    98. switch (position) {
    99. case 0:
    100. ft.replace(R.id.content_frame, home1);
    101. break;
    102. case 1:
    103. ft.replace(R.id.content_frame, maps);
    104. break;
    105. case 2:
    106. ft.replace(R.id.content_frame, weather);
    107. break;
    108. case 3:
    109. ft.replace(R.id.content_frame, catch_session);
    110. break;
    111. case 4:
    112. ft.replace(R.id.content_frame, catch_book);
    113. break;
    114. case 5:
    115. ft.replace(R.id.content_frame, tips_tricks);
    116. break;
    117. case 6:
    118. ft.replace(R.id.content_frame, about);
    119. break;
    120. case 7:
    121. ft.replace(R.id.content_frame, test);
    122. /*case 7:
    123. ft.replace(R.id.content_frame, settings);
    124. break;*/
    125. }
    126. ft.commit();
    127. mDrawerList.setItemChecked(position, true);
    128. // Close drawer
    129. mDrawerLayout.closeDrawer(mDrawerList);
    130. }
    Alles anzeigen

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von androidseb ()

  • Normalerweise sollte das alles so gehen :D
    Ich weiß echt nicht, wo der Fehler ist...
    Probier einfach mal die ID durch die Position zu tauschen. Vll. klappt es ja ;)
    MfG,
    Christopher

    Eine gewisses Maß an Freundlichkeit kann man auch von Menschen im Internet erwarten.
    Das Forum basiert komplett auf der Freiwilligkeit ihrer Nutzer und diese sollen sich wohlfühlen! Daher seid bitte freundlich. Danke