Autore Topic: FragmentActivity e problema nel visualizzare i Fragment  (Letto 757 volte)

Offline Alessio_roma™

  • Utente junior
  • **
  • Post: 50
  • Respect: 0
    • Mostra profilo
    • www.blogarm.tk
  • Dispositivo Android:
    LG Nexus 4
  • Sistema operativo:
    Windows 7 ultimate x64, Ubuntu 14.04
FragmentActivity e problema nel visualizzare i Fragment
« il: 13 Dicembre 2013, 18:12:31 CET »
0
Sto sviluppando un'app con una Split Action Bar,in base al tab selezionato l'app dovrebbe mostrare una delle classi estese a Fragment che compongono l'app.Ho seguito questo tutorial: Android Tab Layout with Swipeable Views[/url] e leggendo i commenti nessuno ha riscontrato problemi,l'unico sono io  :'(

Vi posto il codice dei vari file dell'app:
MainActivity.java
Codice (Java): [Seleziona]
package asrtm.android.provatabs;

import asrtm.android.provatabs.adapter.TabsPagerAdapter;
import asrtm.android.provatabs.R;
import android.os.Bundle;
import android.app.ActionBar;
import android.app.ActionBar.Tab;
import android.app.FragmentTransaction;
import android.graphics.Color;
import android.support.v4.app.FragmentActivity;
import android.support.v4.view.ViewPager;
import android.view.Menu;
import android.widget.LinearLayout;

public class MainActivity extends FragmentActivity implements ActionBar.TabListener {

       
        private ViewPager viewPager;
        private TabsPagerAdapter mAdapter;
        private ActionBar actionBar;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
               
                viewPager = (ViewPager) findViewById(R.id.pager);
                //viewPager=new ViewPager(this);
         actionBar = getActionBar();
         mAdapter = new TabsPagerAdapter(getSupportFragmentManager());
               
                viewPager.setAdapter(mAdapter);
                //rimozione dell'icona e del titolo dall'actionBar
                actionBar.setDisplayShowTitleEnabled(false);
                actionBar.setDisplayShowHomeEnabled(false);
                actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
           
            Tab tabDispositivi = actionBar.newTab();
                        tabDispositivi.setText("Dispositivi");
                tabDispositivi.setTabListener(this);
                       
            Tab tabRilevazioni = actionBar.newTab();
                        tabRilevazioni.setText("Rilevazioni");
                        tabRilevazioni.setTabListener(this);
                       
            Tab tabGestione = actionBar.newTab();
                        tabGestione.setText("Gestione");
                        tabGestione.setTabListener(this);
                       

                actionBar.addTab(tabDispositivi);
                actionBar.addTab(tabRilevazioni);
                actionBar.addTab(tabGestione);
               
                viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
                         
            @Override
            public void onPageSelected(int position) {
                // on changing the page
                // make respected tab selected
                actionBar.setSelectedNavigationItem(position);
            }
 
            @Override
            public void onPageScrolled(int arg0, float arg1, int arg2) {
            }
 
            @Override
            public void onPageScrollStateChanged(int arg0) {
            }
        });
               
               
                LinearLayout layout=new LinearLayout(this);
                layout.setOrientation(LinearLayout.VERTICAL);
                layout.setBackgroundColor(Color.WHITE);
                //setContentView(R.layout.activity_main);
                setContentView(layout);
        }

//      @Override
//      public boolean onCreateOptionsMenu(Menu menu) {
//              // Inflate the menu; this adds items to the action bar if it is present.
//              getMenuInflater().inflate(R.menu.main, menu);
//              return true;
//      }

        @Override
        public void onTabReselected(Tab arg0, FragmentTransaction arg1) {
                // TODO Auto-generated method stub
               
        }

        @Override
        public void onTabSelected(Tab tab, FragmentTransaction ft) {
                            // When the given tab is selected, show the tab contents in the
                            // container view.
                                viewPager.setCurrentItem(tab.getPosition());
               
        }

        @Override
        public void onTabUnselected(Tab tab, FragmentTransaction ft) {
                // TODO Auto-generated method stub
               
        }

}

activity_main.xml
Codice (XML): [Seleziona]
<android.support.v4.view.ViewPager xmlns:android="http://schemas.android.com/apk/res/android"
   android:id="@+id/pager"
   android:layout_width="match_parent"
   android:layout_height="match_parent">
</android.support.v4.view.ViewPager>

uno dei frammenti (tanto sono tutti e 3 uguali al momento,cambia solo il nome e il nome del layout associato,che nel codice è identico):
FragmentGestione.java
Codice (Java): [Seleziona]
package asrtm.android.provatabs;

import asrtm.android.provatabs.R;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;

public class FragmentGestione extends Fragment{
       
        @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
 
        View rootView = inflater.inflate(R.layout.fragment_gestione, container, false);
         
        return rootView;
    }
       
}

fragment_gestione.xml (l'xml degli altri due frammenti è uguale tranne che per il testo della TextView)
Codice (XML): [Seleziona]
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="[url]http://schemas.android.com/apk/res/android"
   android:layout_width="match_parent"
   android:layout_height="match_parent"
   android:orientation="vertical"
   android:background="#ff8400" >
     
    <TextView android:layout_width="fill_parent"
       android:layout_height="wrap_content"
       android:gravity="center"
       android:text="Gestione"
       android:textSize="20dp"
       android:layout_centerInParent="true"/>
     
 
</RelativeLayout>

TabsPagerAdapter.java
Codice (Java): [Seleziona]
package asrtm.android.provatabs.adapter;

import asrtm.android.provatabs.FragmentDispositivi;
import asrtm.android.provatabs.FragmentGestione;
import asrtm.android.provatabs.FragmentRilevazioni;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;

public class TabsPagerAdapter extends FragmentPagerAdapter {

        public TabsPagerAdapter(FragmentManager fm) {
                super(fm);
                // TODO Auto-generated constructor stub
        }

        @Override
        public Fragment getItem(int index) {
                // TODO Auto-generated method stub
                switch (index) {
       case 0:
            // Top Rated fragment activity
            return new FragmentDispositivi();
        case 1:
           // Games fragment activity/
            return new FragmentRilevazioni();
        case 2:
            // Movies fragment activity
            return new FragmentGestione();
        }
               
                return null;
        }

        @Override
        public int getCount() {
                // TODO Auto-generated method stub
                return 3;
        }
       

}

il codice così com'è mi restituisce una NullPointerException che ho scoperto dipendere da
Codice (Java): [Seleziona]
viewPager = (ViewPager) findViewById(R.id.pager); che si trova nella MainActivity
in questo modo l'app non si avvia e quindi non posso verificare che i cambi di schermata funzionino,qualcuno sa aiutarmi?

 
« Ultima modifica: 13 Dicembre 2013, 18:14:31 CET da Alessio_roma™ »
I MIEI SITI:
RPG & Fantasy -> La Fucina di Harad
Pagina personale -> Il Web di Alessio_roma™

Offline Alessio_roma™

  • Utente junior
  • **
  • Post: 50
  • Respect: 0
    • Mostra profilo
    • www.blogarm.tk
  • Dispositivo Android:
    LG Nexus 4
  • Sistema operativo:
    Windows 7 ultimate x64, Ubuntu 14.04
Re:FragmentActivity e problema nel visualizzare i Fragment
« Risposta #1 il: 15 Dicembre 2013, 23:37:55 CET »
0
Ho risolto arrendendomi alle linee guida di google  :-(
I MIEI SITI:
RPG & Fantasy -> La Fucina di Harad
Pagina personale -> Il Web di Alessio_roma™