2014-04-30 2 views
0

Je colle tout le code ci-dessous parce que je ne suis pas sûr d'où je me suis trompé plus. L'application fonctionne bien jusqu'à ce que je laisse //mViewPager.setCurrentItem (tab.getPosition()); aller en action, l'application ne va plus commencer, j'ai essayé de suivre les étapes sur le site des développeurs. Une explication du problème serait également appréciée. Merci!L'application se bloque lorsqu'elle est définie Faites glisser les vues avec les onglets

package com.basel.ribbit; 

import android.app.ActionBar; 
import android.app.ActionBar.Tab; 
import android.app.FragmentTransaction; 
import android.content.Intent; 
import android.os.Bundle; 
import android.support.v4.app.FragmentActivity; 
import android.support.v4.app.FragmentPagerAdapter; 
import android.support.v4.view.ViewPager; 
import android.util.Log; 
import android.view.Menu; 
import android.view.MenuItem; 

import com.parse.ParseAnalytics; 
import com.parse.ParseUser; 

public class MainActivity extends FragmentActivity { 



    /** 
    * The {@link android.support.v4.view.PagerAdapter} that will provide 
    * fragments for each of the sections. We use a {@link FragmentPagerAdapter} 
    * derivative, which will keep every loaded fragment in memory. If this 
    * becomes too memory intensive, it may be best to switch to a 
    * {@link android.support.v13.app.FragmentStatePagerAdapter}. 
    */ 
    SectionsPagerAdapter mSectionsPagerAdapter; 

    /** 
    * The {@link ViewPager} that will host the section contents. 
    */ 
    ViewPager mViewPager; 
    public static final String TAG = MainActivity.class.getSimpleName(); 

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

     //createActionBar(); 

     ParseAnalytics.trackAppOpened(getIntent()); 
     createActionBar(); 

     ParseUser currentUser = ParseUser.getCurrentUser(); 

     if(currentUser == null){ 
      navigateToLogin();}else{ 
       Log.i(TAG,"A NEW USER HAS LOGGED IN " + currentUser.getUsername()); 
      } 


     // Create the adapter that will return a fragment for each of the three 
     // primary sections of the activity. 
     mSectionsPagerAdapter = new SectionsPagerAdapter(this, getSupportFragmentManager()); 

     // Set up the ViewPager with the sections adapter. 
     mViewPager = (ViewPager) findViewById(R.id.pager); 
     mViewPager.setAdapter(mSectionsPagerAdapter); 
     setPagerOnItemSelected(); 


    } 

    private void setPagerOnItemSelected() { 
     mViewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() { 

      @Override 
      public void onPageSelected(int position) { 
       // TODO Auto-generated method stub 
      // getActionBar().setSelectedNavigationItem(position); 

      } 

      @Override 
      public void onPageScrolled(int arg0, float arg1, int arg2) { 
       // TODO Auto-generated method stub 

      } 

      @Override 
      public void onPageScrollStateChanged(int arg0) { 
       // TODO Auto-generated method stub 

      } 
     }); 
    } 

private void createActionBar() { 
     final ActionBar actionBar = getActionBar(); 
     actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); 
     ActionBar.TabListener tabListener = new ActionBar.TabListener() { 

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

      } 

      @Override 
      public void onTabSelected(Tab tab, FragmentTransaction ft) { 
       // TODO Auto-generated method stub 
      //mViewPager.setCurrentItem(tab.getPosition()); 
      } 

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

      } 
     }; 
     actionBar.addTab(actionBar.newTab().setText("Hello").setTabListener(tabListener)); 
     actionBar.addTab(actionBar.newTab().setText("Hi").setTabListener(tabListener)); 



    } 

    private void navigateToLogin() { 
     Intent intent = new Intent (this, LoginActivity.class); 
     intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
     intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK); 
     startActivity(intent); 
    } 

    @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 boolean onMenuItemSelected(int featureId, MenuItem item) { 
     // TODO Auto-generated method stub 
     int id = item.getItemId(); 
     if(id == R.id.action_logout){ 
      ParseUser.logOut(); 
      navigateToLogin(); 

     } 
     return super.onMenuItemSelected(featureId, item); 


    enter code here 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     // Handle action bar item clicks here. The action bar will 
     // automatically handle clicks on the Home/Up button, so long 
     // as you specify a parent activity in AndroidManifest.xml. 
     int id = item.getItemId(); 
     if (id == R.id.action_settings) { 
      return true; 
     } 
     return super.onOptionsItemSelected(item); 
    } 

} 
+0

Veuillez inclure la trace de pile du chat de journal. – PearsonArtPhoto

Répondre

1

Déplacer ces lignes avant createActionBar();

mViewPager = (ViewPager) findViewById(R.id.pager); 

Vous s'écraser parce que vous ne l'avez pas encore initialisé mViewPager, et vous essayez de l'utiliser. Si vous attendez après avoir défini mViewPager, cela devrait fonctionner. L'autre possibilité est que vous n'avez pas de ViewPager dans activity_main.xml avec l'ID pager.

+0

Cela a fonctionné comme un rêve !! Je vous remercie! –

+0

Déjà essayé, mais il ne me laisse pas comme je n'ai pas assez de réputation, je vais revenir ici au bon moment :) –

Questions connexes