2016-06-30 8 views
0
import android.app.ActionBar; 
import android.app.FragmentTransaction; 
import android.os.Bundle; 
import android.support.v4.app.Fragment; 
import android.support.v4.view.ViewPager; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 

import com.rayz.digitalpostbox.R; 
import com.rayz.digitalpostbox.activities.HomeActivity; 
import com.rayz.digitalpostbox.adapters.TabsPagerAdapter; 


public class AccountAndCardTabFragment extends Fragment implements ActionBar.TabListener { 
    private ViewPager viewPager; 
    private TabsPagerAdapter mAdapter; 
    private ActionBar actionBar; 
    private String[] tabs = {"Accounts", "Cards"}; 

    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     View rootView = inflater.inflate(R.layout.account_and_cards_tab_layout, container, false); 
     ((HomeActivity) getActivity()).setTitle("My Wallet"); 
     ((HomeActivity) getActivity()).refferToolbar(); 
     ((HomeActivity) getActivity()).toolbarFunction(); 

     viewPager = (ViewPager) rootView.findViewById(R.id.pager); 
     actionBar = getActivity().getActionBar(); 
     mAdapter = new TabsPagerAdapter(getActivity().getSupportFragmentManager()); 
     viewPager.setAdapter(mAdapter); 
     actionBar.setHomeButtonEnabled(false); 
     actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); 

     for (String tab_name : tabs) { 
      actionBar.addTab(actionBar.newTab().setText(tab_name) 
        .setTabListener(this)); 
     } 

     viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() { 

      @Override 
      public void onPageSelected(int position) { 
       actionBar.setSelectedNavigationItem(position); 
      } 

      @Override 
      public void onPageScrolled(int arg0, float arg1, int arg2) { 
      } 

      @Override 
      public void onPageScrollStateChanged(int arg0) { 
      } 
     }); 
     return rootView; 
    } 

    @Override 
    public void onPause() { 
     super.onPause(); 
     ((HomeActivity) getActivity()).setTitle("Dashboard"); 
    } 

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

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

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

Layout-Datei erhalten ist, wie:kann nicht ActionBar auf Fragmente

<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> 

Mein Problem ist, dass ich Aktionsleiste auf Fragmente bin mit wie in App benötigt und es gibt Null-Zeiger-Ausnahme auf ActionBar = getActivity(). getActionBar(); Unten Code funktioniert gut in einfache Aktivität aclss, aber es ist nicht in Fragment arbeiten. Bitte vorschlagen.

unten ist stackof errar

06-30 16:57:53.156 5715-5715/com.rayz.digitalpostbox E/AndroidRuntime: FATAL EXCEPTION: main 
                     Process: com.rayz.digitalpostbox, PID: 5715 
                     java.lang.NullPointerException: Attempt to invoke virtual method 'void android.app.ActionBar.setHomeButtonEnabled(boolean)' on a null object reference 
                      at com.rayz.digitalpostbox.fragments.AccountAndCardTabFragment.onCreateView(AccountAndCardTabFragment.java:35) 
                      at android.support.v4.app.Fragment.performCreateView(Fragment.java:1974) 
                      at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1067) 
                      at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1252) 
                      at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:742) 
                      at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1617) 
                      at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:517) 
                      at android.os.Handler.handleCallback(Handler.java:739) 
                      at android.os.Handler.dispatchMessage(Handler.java:95) 
                      at android.os.Looper.loop(Looper.java:145) 
                      at android.app.ActivityThread.main(ActivityThread.java:5951) 
                      at java.lang.reflect.Method.invoke(Native Method) 
                      at java.lang.reflect.Method.invoke(Method.java:372) 
                      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1399) 
                      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1194) 
06-30 16:57:54.508 5715-5715/com.rayz.digitalpostbox I/Process: Sending signal. PID: 5715 SIG: 9 
+0

Versuch 'getSupportActionBar()' –

+0

@TimCastelijns verwenden dann versuchen, Ich habe es bereits versucht, aber es funktioniert nicht – Teekam

+0

tut Ihr Aktivität haben ActionBar zu einer Zeit, die Sie versuchen, es in Fragment zu bekommen? –

Antwort

0

Wenn Sie ActionBarActivity Code unten

actionBar = ((ActionBarActivity)getActivity()).getSupportActionBar(); 

und wenn AppCompatActivity dann

ActionBar actionBar = ((AppCompatActivity)getActivity()).getSupportActionBar();