IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Composants graphiques Android Discussion :

Problème ouvrir une page d'un ViewPager avec option menu


Sujet :

Composants graphiques Android

  1. #1
    Membre à l'essai
    Homme Profil pro
    Webmaster
    Inscrit en
    Janvier 2018
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2018
    Messages : 15
    Points : 11
    Points
    11
    Par défaut Problème ouvrir une page d'un ViewPager avec option menu
    Bonjour,

    Voilà étant débutant dans le développement Android je me trouve confronté à un problème et après avoir écumer tout les tutoriaux que l'on puisse trouver sur internet comment dire je suis désespéré.

    Je suis en train de code une application qui ressemblerait à un livre, pour cela j’utilise un menu Dreawer + un option menu et un ViewPager.
    Je me sers de l'option menu comme table des matières et mon soucie c'est que je n'arrive pas à aller sur une des pages (fragment) de mon ViewPager depuis les Items de mon option menu !

    Je vous mets mon code ci-dessous aurait il quelqu'un pour me dépatouiller ça serait super sympas par contre sans vouloir abuser serait-il possible de me fournir aussi une explication détailler que je puisse comprendre et apprendre.

    En vous remercient

    Ma structure :
    Mes Class


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    CustomPagerAdapter
    MainActivity
    ModelObject
    page_001
    page_002
    page_003
    page_004
    page_005
    page_006
    page_007
    page_008
     
    Mes Layout
     
    activity_main.xml
    app_bar_main.xml
    content_main.xml
    nav_header_main.xml
    page_001.xml
    page_002.xml
    page_003.xml
    page_004.xml
    page_005.xml
    page_006.xml
    page_007.xml
    page_008.xml
     
    menu
    activity_main_drawer.xml
    main.xml
    Ma Class CustomPagerAdapter

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    package xxxxxxxxxxx.com;
     
    import android.content.Context;
    import android.support.v4.view.PagerAdapter;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
     
    public class CustomPagerAdapter extends PagerAdapter {
     
        private Context mContext;
     
        public CustomPagerAdapter(Context context) {
            mContext = context;
        }
     
        @Override
        public Object instantiateItem(ViewGroup collection, int position) {
            ModelObject modelObject = ModelObject.values()[position];
            LayoutInflater inflater = LayoutInflater.from(mContext);
            ViewGroup layout = (ViewGroup) inflater.inflate(modelObject.getLayoutResId(), collection, false);
            collection.addView(layout);
            return layout;
        }
     
        @Override
        public void destroyItem(ViewGroup collection, int position, Object view) {
            collection.removeView((View) view);
        }
     
        @Override
        public int getCount() {
            return ModelObject.values().length;
        }
     
        @Override
        public boolean isViewFromObject(View view, Object object) {
            return view == object;
        }
     
        @Override
        public CharSequence getPageTitle(int position) {
            ModelObject customPagerEnum = ModelObject.values()[position];
            return mContext.getString(customPagerEnum.getTitleResId());
        }
     
    }
    Ma Class ModelObject

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    package xxxxxxxxx.com;
     
    enum ModelObject {
     
        page_001(R.string.page_001, R.layout.page_001),
        page_002(R.string.page_002, R.layout.page_002),
        page_003(R.string.page_003, R.layout.page_003),
        page_004(R.string.page_004, R.layout.page_004),
        page_005(R.string.page_005, R.layout.page_005),
        page_006(R.string.page_006, R.layout.page_006),
        page_007(R.string.page_007, R.layout.page_007),
        page_008(R.string.page_008, R.layout.page_008);
     
        private int mTitleResId;
        private int mLayoutResId;
     
        ModelObject(int titleResId, int layoutResId) {
            mTitleResId = titleResId;
            mLayoutResId = layoutResId;
        }
     
        public int getTitleResId() {
            return mTitleResId;
        }
     
        public int getLayoutResId() {
            return mLayoutResId;
        }
     
    }
    Ma Class MainActivity

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    package xxxxxxxxxx.com;
     
    import android.content.Intent;
    import android.os.Bundle;
    import android.support.design.widget.NavigationView;
    import android.support.v4.view.GravityCompat;
    import android.support.v4.view.ViewPager;
    import android.support.v4.widget.DrawerLayout;
    import android.support.v7.app.ActionBarDrawerToggle;
    import android.support.v7.app.AppCompatActivity;
    import android.support.v7.widget.Toolbar;
    import android.view.Menu;
    import android.view.MenuItem;
    import android.view.View;
     
    public class MainActivity extends AppCompatActivity
            implements NavigationView.OnNavigationItemSelectedListener {
     
        private View view;
     
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
     
            Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
            setSupportActionBar(toolbar);
     
            ViewPager viewPager = (ViewPager) findViewById (R.id.viewpager);
            viewPager.setAdapter (new CustomPagerAdapter(this));
     
            DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
            ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
                    this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
            drawer.addDrawerListener(toggle);
            toggle.syncState();
     
            NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
            navigationView.setNavigationItemSelectedListener(this);
        }
     
        @Override
        public void onBackPressed() {
            DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
            if (drawer.isDrawerOpen(GravityCompat.START)) {
                drawer.closeDrawer(GravityCompat.START);
            } else {
                super.onBackPressed();
            }
        }
     
        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
            getMenuInflater().inflate(R.menu.main, menu);
            return true;
        }
     
        @Override
        public boolean onOptionsItemSelected(MenuItem item) {
            switch (item.getItemId()) {
     
                case R.id.page_001:
                    Intent Intent1 = new Intent(this, MainActivity.class);
                    this.startActivity(Intent1);
                    return true;
     
                case R.id.page_002:
                    Intent Intent2 = new Intent(this, MainActivity.class);
                    this.startActivity(Intent2);
                    return true;
     
                default:
                    return super.onOptionsItemSelected(item);
            }
        }
     
        @SuppressWarnings("StatementWithEmptyBody")
        @Override
        public boolean onNavigationItemSelected(MenuItem item) {
            // Handle navigation view item clicks here.
            int id = item.getItemId();
     
            if (id == R.id.nav_camera) {
                // Handle the camera action
            } else if (id == R.id.nav_gallery) {
     
            } else if (id == R.id.nav_slideshow) {
     
            } else if (id == R.id.nav_manage) {
     
            } else if (id == R.id.nav_share) {
     
            } else if (id == R.id.nav_send) {
     
            }
     
            DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
            drawer.closeDrawer(GravityCompat.START);
            return true;
        }
    }

  2. #2
    Modérateur
    Avatar de Hizin
    Homme Profil pro
    Développeur mobile
    Inscrit en
    Février 2010
    Messages
    2 180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur mobile

    Informations forums :
    Inscription : Février 2010
    Messages : 2 180
    Points : 5 072
    Points
    5 072
    Par défaut
    À vu de nez, je vois plusieurs choix de conceptions discutables.
    Je te suggère donc de prendre le temps de bien réfléchir a ton architecture, ainsi que de relire et de bien comprendre le cycle de vie d'une Activity, celui d'un Fragment ainsi que de relire ce à quoi sert une Activity (grosso-modo un conteneur de vue) et à quoi sert un Fragment (grosso-modo une vue réutilisable).

    Au vu de ce que je comprends de ton code, ta MainActivity contient ton ViewPager qui contient tes "pages".
    Ensuite, au niveau de option menu, tu demandes de recréer MainActivity.
    Pourquoi ne demandes-tu pas simplement au ViewPager de "montrer" la bonne page via la méthode setCurrentItem ?
    C'est Android, PAS Androïd, ou Androïde didiou !
    Le premier est un OS, le second est la mauvaise orthographe du troisième, un mot français désignant un robot à forme humaine.

    Membre du comité contre la phrase "ça marche PAS" en titre et/ou explication de problème.

    N'oubliez pas de consulter les FAQ Android et les cours et tutoriels Android

Discussions similaires

  1. Ouvrir une page web depuis excel - avec tuto interaction web
    Par fifi5622 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 13/12/2014, 23h03
  2. Réponses: 2
    Dernier message: 09/03/2014, 03h16
  3. [Debutant] Ouvrir une page web avec authentification
    Par sorry60 dans le forum Langage
    Réponses: 14
    Dernier message: 10/04/2006, 13h07
  4. Ouvrir une page internet non redimensionnable et sans menu
    Par Orionmel dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 07/01/2006, 00h30
  5. Ouvrir une page Web avec le navigateur
    Par BB85_TIGRIS dans le forum API standards et tierces
    Réponses: 7
    Dernier message: 17/12/2005, 09h45

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo