0

Donc, je suis en train de créer une application qui utilise un Navigation Drawer qui est divisé en fragments séparé pour accéder à chacun des onglets. Maintenant, la chose que je voudrais savoir comment faire, est d'avoir également un Settings/Preferences Fragment or Activity (pas sûr lequel serait approprié dans ce contexte) pour ouvrir une fois que l'utilisateur sélectionne l'onglet "Settings" dans le Navigation Drawer. J'ai regardé partout sur Internet pour une explication claire sur la façon de faire cela, car je ne suis pas un expert en développement d'applications.Android: comment implémenter une page de paramètres dans un tiroir de navigation?

Voici une photo du tiroir Navigation: Navigation Drawer

Si une mise en page ou un code de classe est nécessaire, je suis heureux de fournir. Toute aide est très appréciée!

+0

Vous devez créer une activité de réglage puis ajouter/remplacer 'PreferenceFragment' – tahsinRupam

+0

Voulez-vous que PreferenceFragment s'ouvre littéralement dans le tiroir? Ou juste du tiroir dans une nouvelle activité? Ou voulez-vous remplacer le fragment Home par la page Settings? Si oui, pourquoi? –

+0

@tahsinRupam Voulez-vous dire le modèle d'activités de paramètres dans la galerie lors de la création d'une nouvelle activité? – AndroidDevBro

Répondre

1

Vous pouvez utiliser le PreferenceFragmentCompat, par exemple:

D'abord, vous créez un fragment qui étend PreferenceFragmentCompat et la mise en page associée dans le dossier res/xml

settings.xml

<android.support.v7.preference.PreferenceScreen 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    <android.support.v7.preference.PreferenceCategory 
     android:key="the_key_to_retrieve_the_preference_in_code" 
     android:title="the_preference_title"> 

     <android.support.v7.preference.Preference 
      android:key="key" 
      android:summary="subtitle" 
      android:title="title" /> 

     <android.support.v7.preference.Preference 
      android:key="key2" 
      android:summary="subtitle2" 
      android:title="title2" /> 

     <android.support.v7.preference.CheckBoxPreference 
      android:key="key_for_check_box" 
      android:summary="subtitle" 
      android:title="title" /> 

    </android.support.v7.preference.PreferenceCategory> 
</android.support.v7.preference.PreferenceScreen> 

ParamètresFragment.java

public class SettingsFragment extends PreferenceFragmentCompat { 

    @Override 
    public void onCreatePreferences(Bundle savedInstanceState, String rootKey) { 
     addPreferencesFromResource(R.xml.settings); 
    } 

    @Override 
    public void onActivityCreated(Bundle savedInstanceState) { 
     super.onActivityCreated(savedInstanceState); 
     // To get a preference 
     PreferenceScreen preferenceScreen = getPreferenceScreen(); 
     Preference preference = preferenceScreen.findPreference("preference_ key_defined_in_the_xml"); 

    //You can set a listener 
    preference.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() { 
      @Override 
      public boolean onPreferenceClick(Preference preference) { 
       return false; 
      } 
     }); 

    //change title 
    preference.setTitle("my_title"); 

    // etc 
    } 
} 

Ensuite, vous créez une activité qui contiendra le fragment:

SettingsActivity.java

public class SettingsActivity extends AppCompatActivity { 
    private Toolbar mToolbar; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.settings_activity); 

     mToolbar = (Toolbar) findViewById(R.id.toolbar); 

     setSupportActionBar(mToolbar); 
     setActionBarTitle("Settings"); 
     ActionBar actionBar = getSupportActionBar(); 
     if (actionBar != null) { 
      actionBar.setHomeButtonEnabled(true); 
      actionBar.setDisplayHomeAsUpEnabled(true); 
     } 
    } 
} 

settings_activity.xml

<?xml version="1.0" encoding="utf-8"?> 
<android.support.design.widget.CoordinatorLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    <android.support.design.widget.AppBarLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content"> 

     <android.support.v7.widget.Toolbar 
      android:id="@+id/toolbar" 
      android:layout_width="match_parent" 
      android:layout_height="?attr/actionBarSize" 
      android:background="?attr/colorPrimary" 
      android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" 
      app:popupTheme="@style/ThemeOverlay.AppCompat.Light" /> 
    </android.support.design.widget.AppBarLayout> 

    <fragment 
     android:id="@+id/settings_fragment" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     app:layout_behavior="@string/appbar_scrolling_view_behavior"   
     android:name="package.name.SettingsFragment"/> 

</android.support.design.widget.CoordinatorLayout> 

que, puis lorsque vous cliquez sur l'article dans votre NavigationDrawer vous définissez un nouveau Intent et appelez-le:

Intent intent = new Intent(this /*or the actual context*/, SettingsActivity.class); 
startActivity(intent); 

Espérons que cela aide. Désolé pour mon anglais.

+0

Une telle bonne réponse !! Merci beaucoup l'homme! –