Autore Topic: PreferenceFragment e Navigation Drawer  (Letto 584 volte)

Offline array81

  • Utente junior
  • **
  • Post: 64
  • Respect: 0
    • Mostra profilo
    • MartinZone
  • Dispositivo Android:
    OnePlus One, Nexus S
  • Play Store ID:
    MartinZone
  • Sistema operativo:
    Windows 7
PreferenceFragment e Navigation Drawer
« il: 07 Marzo 2016, 01:06:04 CET »
0
Sto modificando la mia app introducendo la Navigation Drawer.
Al momento ho quasi terminato ma ho problemi con il PreferenceFragment che vorrei utilizzare in modo da visualizzare le impostazioni a partire da una delle voci del Navigation Drawer.
Nella migliore delle ipotesi visualizzo le impostazioni in trasparenze, mi spiego in ogni sezione della mia app ho una toolbar della parte alta e un banner nella parte bassa, nel resto dello schermo il resto dell'app.
Nel caso del PreferenceFragment, nel migliore dei casi visualizzo toolbar e il banner quindi le opzioni che coprono tutto lo schermo andando sia sopra la toolbar che il banner (con una specie di effetto trasparenza).
Ho fatto vari tentativi, leggendo qua e là in internet, l'ultima versione del mio programma vede usare una activity principale, un fragment e un preferencefragment.

Nell'activity principale ho questo codice:
Codice (Java): [Seleziona]
            case R.id.item_settings:
                if(!menuItem.isChecked()){
                    selectedIndex = ITEM_SETTINGS;
                    menuItem.setChecked(true);

                    SettingsBoxFragment settingsbox_Fragment = new SettingsBoxFragment();

                    getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,
                            settingsbox_Fragment,FRAGMENT_TAG_SETTINGS).commit();
                }
                drawerLayout.closeDrawer(GravityCompat.START);
                return true;

attraverso il quale viene visualizzato il fragment nel quale troviamo:

Codice (Java): [Seleziona]
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        view =  inflater.inflate(R.layout.fragment_settings, container, false);

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

        setHasOptionsMenu(true);

        setupToolbar();

        // Look up the AdView as a resource and load a request.
        AdView adView = (AdView)view.findViewById(R.id.adView);
        AdRequest adRequest = new AdRequest.Builder().build();
        adView.loadAd(adRequest);

        return view;
    }

dove

Codice (XML): [Seleziona]
<?xml version="1.0" encoding="utf-8"?>

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:tools="http://schemas.android.com/tools"
   android:orientation="vertical" android:layout_width="match_parent"
   android:layout_height="match_parent"
   xmlns:ads="http://schemas.android.com/apk/res-auto">

    <android.support.v7.widget.Toolbar
       xmlns:android="http://schemas.android.com/apk/res/android"
       xmlns:app="http://schemas.android.com/apk/res-auto"
       android:id="@+id/toolbar"
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
       app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
       app:theme="@style/MyActionBarStyle"/>

    <fragment android:name="com.myname.mycode.SettingsFragment"
       android:id="@+id/settingsView"
       android:layout_weight="2"
       android:layout_width="0dp"
       android:layout_height="match_parent" />

    <com.google.android.gms.ads.AdView
       android:id="@+id/adView"
       android:layout_width="fill_parent"
       android:layout_height="wrap_content"
       ads:adUnitId="myid"
       ads:adSize="BANNER"
       android:layout_gravity="bottom"
       android:background="@android:color/background_dark"
       android:layout_alignParentBottom="true"
       android:layout_alignParentLeft="true"
       android:layout_alignParentStart="true" />

</RelativeLayout>

Ora vorrei sapere come caricare SettingsFragment (PreferenceFragment) all'interno del precedente fragment.
A dire il vero mi sembra un pochino complesso il tutto (activity->fragment->preferencefragment) ma caricare direttamente PreferenceFragment mi resta impossibile.

Non sono un esperto e mi scuro per il gergo usato.

Offline iClaude

  • Utente normale
  • ***
  • Post: 221
  • Respect: +14
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S5
  • Sistema operativo:
    Windows 10
Re:PreferenceFragment e Navigation Drawer
« Risposta #1 il: 09 Marzo 2016, 14:22:23 CET »
0
Perché non fai partire un Activity diversa per le preferenze?
Hai seguito il sistema standard x visualizzare le preferenze?  Il codice che hai usato non mi torna...

Offline array81

  • Utente junior
  • **
  • Post: 64
  • Respect: 0
    • Mostra profilo
    • MartinZone
  • Dispositivo Android:
    OnePlus One, Nexus S
  • Play Store ID:
    MartinZone
  • Sistema operativo:
    Windows 7
Re:PreferenceFragment e Navigation Drawer
« Risposta #2 il: 10 Marzo 2016, 15:28:52 CET »
0
Metto le mani avanti e ribadisco di non essere esperto in materia.
Per usare il navigation drawer nella mia app mi sono ispirato a questo esempio: https://github.com/sagar-viradiya/android-design-support-lib-demo dove per l'appunto c'è un'activity principale quindi dalla singola voce del navigation drawer si accede a un fragment.
Devo dire tra le altre cose che tutto funziona, l'unico problema che riscontro e con i settaggi.

In particolare rimando al metodo onNavigationItemSelected visibile
https://github.com/sagar-viradiya/android-design-support-lib-demo/blob/master/app/src/main/java/com/sagar/materialdesigndemo/MainActivity.java