1

フラグメントに対して動的に変更されるアクションバーを初期化したタブアクティビティがあります。それは基本的に私が望む機能です。だから私がアプリケーションを実行しているときにNPRが表示されているということが起こります。 タブアクティビティJavaクラス、フラグメントjavaクラス、ログcatを添付しています。 bottoms_tabs_activityのフラグメントを使用しているときにアクションバーにnullポインタ例外が発生しています

Bottoms_tab_activity.java

public class Bottom_Tabs_Activity extends AppCompatActivity{ 
    private TabLayout tabLayout; 
    private ViewPager viewPager; 

    private int[] tabIcons = { 
      R.drawable.ic_friends, 
      R.drawable.ic_map, 
      R.drawable.ic_status, 
      R.drawable.ic_chat, 
      R.drawable.ic_profile 

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

     viewPager = (ViewPager) findViewById(R.id.viewpager); 
     if (viewPager != null) 
      setupViewPager(viewPager); 
     else { 
      Log.e("test", "i am null"); 
     } 

     setupTabIcons(); 
    } 
     private void setupTabIcons() { 
      tabLayout.getTabAt(0).setIcon(tabIcons[0]); 
      tabLayout.getTabAt(1).setIcon(tabIcons[1]); 
      tabLayout.getTabAt(2).setIcon(tabIcons[2]); 
      tabLayout.getTabAt(3).setIcon(tabIcons[3]); 
      tabLayout.getTabAt(4).setIcon(tabIcons[4]); 
     } 

    private void setupViewPager(ViewPager viewPager) 
    { 
     ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager()); 
     adapter.addFrag(new MapFragment(),"MAPS"); 
     adapter.addFrag(new PeopleFragment(),"PEOPLE"); 
     adapter.addFrag(new HomeFragment(),"HOME"); 
     adapter.addFrag(new ChatFragment(),"CHAT"); 
     adapter.addFrag(new ProfileFragment(),"PROFILE"); 

     viewPager.setAdapter(adapter); 
    } 
    class ViewPagerAdapter extends FragmentStatePagerAdapter 
    { 
     private final List<Fragment> mFragmentList = new ArrayList<>(); 
     private final List<String> mFragmentTitleList = new ArrayList<>(); 
     public ViewPagerAdapter(FragmentManager manager) 
     { 
      super(manager); 
     } 
     @Override 
     public Fragment getItem(int position) { 
      return mFragmentList.get(position); 
     } 
     @Override 
     public int getCount() { 
      return mFragmentList.size(); 
     } 
     public void addFrag(Fragment fragment, String title) { 
      mFragmentList.add(fragment); 
      mFragmentTitleList.add(title); 
     } 
     @Override 
     public CharSequence getPageTitle(int position) { 

      // return null to display only the icon 
      return null; 
     } 
    } 
    public void setActionBarTitle(String title) { 
     TextView s= (TextView) getSupportActionBar().getCustomView().findViewById(R.id.tv); 
     s.setText(title); 
    } 
} 

Homefragment.java

public class HomeFragment extends Fragment { 

    public HomeFragment() { 
     // Required empty public constructor 
    } 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 

     super.onCreate(savedInstanceState); 
    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 

     // Inflate the layout for this fragment 
     ((Bottom_Tabs_Activity)getActivity()).setActionBarTitle("Status"); 
     return inflater.inflate(R.layout.homefragment, container, false); 
    } 
} 

logcat

04-07 11:12:55.097 28437-28437/com.example.vikrant.safeshelter E/AndroidRuntime: FATAL EXCEPTION: main 
Process: com.example.vikrant.safeshelter, PID: 28437 
java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.View android.support.v7.app.ActionBar.getCustomView()' on a null object reference 
at com.example.vikrant.safeshelter.Bottom_Tabs_Activity.setActionBarTitle(Bottom_Tabs_Activity.java:183) 
at com.example.vikrant.safeshelter.HomeFragment.onCreateView(HomeFragment.java:32) 
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:738) 
at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1617) 
at android.support.v4.app.FragmentManagerImpl.executePendingTransactions(FragmentManager.java:570) 
at android.support.v4.app.FragmentStatePagerAdapter.finishUpdate(FragmentStatePagerAdapter.java:164) 
at android.support.v4.view.ViewPager.populate(ViewPager.java:1177) 
at android.support.v4.view.ViewPager.setCurrentItemInternal(ViewPager.java:608) 
at android.support.v4.view.ViewPager.setCurrentItemInternal(ViewPager.java:570) 
at android.support.v4.view.ViewPager.setCurrentItem(ViewPager.java:551) 
at android.support.design.widget.TabLayout$ViewPagerOnTabSelectedListener.onTabSelected(TabLayout.java:1627) 
at android.support.design.widget.TabLayout.selectTab(TabLayout.java:837) 
at android.support.design.widget.TabLayout.selectTab(TabLayout.java:809) 
at android.support.design.widget.TabLayout$Tab.select(TabLayout.java:1077) 
at android.support.design.widget.TabLayout$1.onClick(TabLayout.java:643) 
at android.view.View.performClick(View.java:4759) 
at android.view.View$PerformClick.run(View.java:19770) 
at android.os.Handler.handleCallback(Handler.java:739) 
at android.os.Handler.dispatchMessage(Handler.java:95) 
at android.os.Looper.loop(Looper.java:135) 
at android.app.ActivityThread.main(ActivityThread.java:5234) 
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:909) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:704) 

ライン183は

ですホームフラグメントの
TextView s= (TextView) getSupportActionBar().getCustomView().findViewById(R.id.tv); 

ライン32

((Bottom_Tabs_Activity)getActivity()).setActionBarTitle("Status"); 
+0

フラグメントの代わりにViewPagerAdapterで設定しようとしています – Pavya

+0

@Pravin –

答えて

0

は、次の試してみてくださいされています。FragmentonActivityCreated方法で

((Bottom_Tabs_Activity)getActivity()).setActionBarTitle("Status");

+0

でもエラーが表示されることがありますか? –

関連する問題