Autore Topic: Fragment Nullo  (Letto 198 volte)

Offline salvatore.zagarella

  • Utente normale
  • ***
  • Post: 239
  • Respect: +2
    • Mostra profilo
    • Ieeng Solution
Fragment Nullo
« il: 08 Aprile 2013, 16:26:01 CEST »
0
Salve ragazzi,
sto seguendo il tutorial di bradipao per realizzare un fragment semplice [medio] Introduzione ai Fragment - Android Developers Italia.

Quello che vorrei realizzare è un layout diverso per smartphone e table. Nel caso di tablet avrò:
- menu a sinistra
- webview a destra.

Nel caso di smartphone avrò invece due attività separate per menu e webview.

Quando il cell è un modalità portrait si abilita il layout per tablet e funziona correttamente; quando invece uso lo smartphone, non riesco a prendere l'inflater dandomi null come risultato.

Allora nella cartella LAYOUT, che gestisce il layout verticale, ho i files
- activity_body.xml contenente 1 fragment per il body (@+id/bodyFragment);
- activity_main_menu.xml contenente 1 fragment per il menu verticale (@+id/menuFragment);
- fragment_menu.xml, layout vero e proprio verticale
- fragment_body.xml, singola webView

Nella cartella LAYOUT-LAND ho i files:
- activity_main_menu.xml contenente 2 fragment per il menu verticale (@+id/menuFragment) e per il body (@+id/bodyFragment);
- fragment_menu.xml, layout del menu landscape

Il problema mi si crea, dicevo, quando il telefono è in modalità PORTRAIT, verticale (che mi confondo pure io.. :) ) in quando non riesco a prendere il fragment. Vi posto un po' di codice.

Codice (Java): [Seleziona]
public class BodyActivity extends FragmentActivity {

        @Override
        protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);

                // check orientation to avoid crash (this activity is not necessary in landscape)
                if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) {
                        finish();
                        return;
                } else setContentView(R.layout.fragment_body);

                // show body content as requested in Intent extra
                Bundle extras = getIntent().getExtras();
                if (extras != null) {                  
                        String s = extras.getString("value");
                        Log.i("valore --->>", s);
                       
                        // get body fragment
                        FragmentBody fragment = (FragmentBody) getSupportFragmentManager().findFragmentById(R.id.bodyFragment);
                                               
                        // if fragment is not null and in layout set text
                        if ((fragment != null) && fragment.isInLayout()) {
                                fragment.loadPage(s);
                        }else
                                Log.e("fragment", "frag NULLO");             // <<<<<-------- vado a finire qui
                }

        }
}

Visto che sto iniziando adesso con i fragment, probabilmente ho fatto un po' di confusione..
Qualcuno ha idea di cosa succeda??

Post unito: 08 Aprile 2013, 16:34:40 CEST
Rileggendo il tutto ho cambiato la riga
Codice (Java): [Seleziona]
else setContentView(R.layout.activity_body);
ed adesso funziona...

Bhe..grazie e scusate il casino..
« Ultima modifica: 08 Aprile 2013, 16:34:40 CEST da salvatore.zagarella, Reason: Merged DoublePost »