Autore Topic: Tab ActionBar mi da errore se aggiungo il mViewPager.setCurrentItem()...  (Letto 385 volte)

Offline theKuston

  • Nuovo arrivato
  • *
  • Post: 48
  • Respect: 0
    • Google+
    • Mostra profilo
  • Dispositivo Android:
    Google Nexus 5
  • Play Store ID:
    K-soft
  • Sistema operativo:
    windows 8.1, Ubuntu 14
weee
allora io sto creando un'app matematica che calcola cose tipo le potenze, equazioni e roba simile, e ho deciso di farla con una tab ActionBsr, e tutto andava bene finche non è arrivato il momento di far si che quando si seleziona una tab dall'ActionBar si visualizzi il fragment appropiato, ed è li che è arrivato il problema... l'IDE non mi da errori ma quando lo eseguo mi da il seguente LOG:
Codice: [Seleziona]
07-27 16:40:26.674  24850-24850/com.el.kuston.chuletasenmates W/ActivityThread﹕ Application com.el.kuston.chuletasenmates can be debugged on port 8100...
07-27 16:40:26.784  24850-24850/com.el.kuston.chuletasenmates D/AndroidRuntime﹕ Shutting down VM
07-27 16:40:26.784  24850-24850/com.el.kuston.chuletasenmates E/AndroidRuntime﹕ FATAL EXCEPTION: main
    Process: com.el.kuston.chuletasenmates, PID: 24850
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.el.kuston.chuletasenmates/com.el.kuston.chuletasenmates.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.support.v4.view.ViewPager.setCurrentItem(int)' on a null object reference
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2184)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2233)
            at android.app.ActivityThread.access$800(ActivityThread.java:135)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:136)
            at android.app.ActivityThread.main(ActivityThread.java:5001)
            at java.lang.reflect.Method.invoke(Native Method)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
     Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.support.v4.view.ViewPager.setCurrentItem(int)' on a null object reference
            at com.el.kuston.chuletasenmates.MainActivity.onTabSelected(MainActivity.java:91)
            at com.android.internal.app.ActionBarImpl.selectTab(ActionBarImpl.java:577)
            at com.android.internal.app.ActionBarImpl.addTab(ActionBarImpl.java:506)
            at com.android.internal.app.ActionBarImpl.addTab(ActionBarImpl.java:492)
            at com.el.kuston.chuletasenmates.MainActivity.onCreate(MainActivity.java:63)
            at android.app.Activity.performCreate(Activity.java:5231)
            at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2148)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2233)
            at android.app.ActivityThread.access$800(ActivityThread.java:135)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:136)
            at android.app.ActivityThread.main(ActivityThread.java:5001)
            at java.lang.reflect.Method.invoke(Native Method)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
07-27 16:40:32.004  24850-24850/com.el.kuston.chuletasenmates I/Process﹕ Sending signal. PID: 24850 SIG: 9
... mi potreste aiutare?? perche ho anche cercato in qualche tutorial ma non mi ha aiutato.. grazie...
Questa è la MainActivity:
Codice (Java): [Seleziona]
package com.el.kuston.chuletasenmates;

import android.app.ActionBar;
import android.app.FragmentTransaction;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v7.app.ActionBarActivity;


public class MainActivity extends ActionBarActivity implements ActionBar.TabListener {


    ViewPager mViewPager;
    ActionBar mActionBar;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mActionBar = getActionBar();
        mActionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);

        final String tab_root = getResources().getString(R.string.tab_name_root);
        final String tab_power = getResources().getString(R.string.tab_name_powers);
        final String tab_equatons = getResources().getString(R.string.tab_name_equations);
        final String tab_triangle = getResources().getString(R.string.tab_name_triangle);
        final String tab_square = getResources().getString(R.string.tab_name_square);
        final String tab_pitagoras = getResources().getString(R.string.tab_name_pitagoras);
        final String tab_spheres = getResources().getString(R.string.tab_name_spheres);
        final String tab_polygons = getResources().getString(R.string.tab_name_polygons);


        ActionBar.Tab RootsTab = mActionBar.newTab();
        ActionBar.Tab powerTab = mActionBar.newTab();
        ActionBar.Tab equationsTab = mActionBar.newTab();
        ActionBar.Tab TriangleTab = mActionBar.newTab();
        ActionBar.Tab SquareTab = mActionBar.newTab();
        ActionBar.Tab pitagorasTab = mActionBar.newTab();
        ActionBar.Tab spheresTab = mActionBar.newTab();
        ActionBar.Tab polygonsTab = mActionBar.newTab();

        RootsTab.setText(tab_root);
        powerTab.setText(tab_power);
        equationsTab.setText(tab_equatons);
        TriangleTab.setText(tab_triangle);
        SquareTab.setText(tab_square);
        pitagorasTab.setText(tab_pitagoras);
        spheresTab.setText(tab_spheres);
        polygonsTab.setText(tab_polygons);

        RootsTab.setTabListener(this);
        powerTab.setTabListener(this);
        equationsTab.setTabListener(this);
        TriangleTab.setTabListener(this);
        SquareTab.setTabListener(this);
        pitagorasTab.setTabListener(this);
        spheresTab.setTabListener(this);
        polygonsTab.setTabListener(this);

        mActionBar.addTab(RootsTab);
        mActionBar.addTab(powerTab);
        mActionBar.addTab(equationsTab);
        mActionBar.addTab(TriangleTab);
        mActionBar.addTab(SquareTab);
        mActionBar.addTab(pitagorasTab);
        mActionBar.addTab(spheresTab);
        mActionBar.addTab(polygonsTab);

        // Create the adapter that will return a fragment for each of the three
        // primary sections of the activity.


        // Set up the ViewPager with the sections adapter.
        mViewPager = (ViewPager) findViewById(R.id.pager);
        mViewPager.setAdapter(new SectionsPagerAdapter(getSupportFragmentManager()));
         mViewPager
              .setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() {
                 @Override
               public void onPageSelected(int position) {
                  mActionBar.setSelectedNavigationItem(position);
            }
        });

    }

    @Override
    public void onTabSelected(ActionBar.Tab tab, FragmentTransaction ft) {
        mViewPager.setCurrentItem(tab.getPosition());

    }

    @Override
    public void onTabUnselected(ActionBar.Tab tab, FragmentTransaction ft) {

    }

    @Override
    public void onTabReselected(ActionBar.Tab tab, FragmentTransaction ft) {

    }


    public class SectionsPagerAdapter extends FragmentPagerAdapter {

        public SectionsPagerAdapter(FragmentManager fm) {
            super(fm);
        }

        @Override
        public Fragment getItem(int position) {
            Fragment fragment = null;

            if (position == 0) {
                fragment = new RootFragment();
            }
            if (position == 1) {
                fragment = new PowerFragment();
            }

            if (position == 2) {
                fragment = new EquationsFragment();
            }

            if (position == 3) {
                fragment = new TriangleAreaFragment();
            }

            if (position == 4) {
                fragment = new SquareAreaFragment();
            }
            if (position == 5) {
                fragment = new PitagorasFragment();
            }
            if(position == 6){
                fragment = new SpheresFragment();
            }
            if(position == 7){
                fragment = new PolygonsFragment();
            }



            return fragment;
        }

        @Override
        public int getCount() {

            return 8;
        }


    }


}
Grazie ancora!!
PS: spero di non aver sbagliato il tipo di inserimento del codice del LogCat, ma non sapevo quale dei tre "inserisci codice" usare XD
Tutte le mie applicazioni sul play store:
https://play.google.com/store/apps/developer?id=K-soft

Offline arlabs

  • Utente normale
  • ***
  • Post: 433
  • Respect: +49
    • Mostra profilo
  • Dispositivo Android:
    GalaxyS6, Nexus5
  • Play Store ID:
    AR Labs
  • Sistema operativo:
    Windows 10
Re:Tab ActionBar mi da errore se aggiungo il mViewPager.setCurrentItem()...
« Risposta #1 il: 28 Luglio 2014, 10:42:07 CEST »
0
Prova a mettere la parte di creazione del ViewPager prima degli addTab.

Ciao.

Offline theKuston

  • Nuovo arrivato
  • *
  • Post: 48
  • Respect: 0
    • Google+
    • Mostra profilo
  • Dispositivo Android:
    Google Nexus 5
  • Play Store ID:
    K-soft
  • Sistema operativo:
    windows 8.1, Ubuntu 14
Re:Tab ActionBar mi da errore se aggiungo il mViewPager.setCurrentItem()...
« Risposta #2 il: 28 Luglio 2014, 14:11:34 CEST »
0
Grazie ha funzionato!!!
Tutte le mie applicazioni sul play store:
https://play.google.com/store/apps/developer?id=K-soft