Я пытаюсь разработать вкладки салфетки в приложении для Android. Я искал его и попытался реализовать его сам. Вот что я сделал:setHomeButtonEnabled (false) возвращает null при использовании его для вкладок салфетки
MainActivity.java:
package com.example.shiza.swipetabs;
import android.app.ActionBar;
import android.app.FragmentTransaction;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Window;
public class MainActivity extends FragmentActivity implements ActionBar.TabListener{
ActionBar bar;
ViewPager viewPager;
FragmentPageAdapter ft;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getWindow().requestFeature(Window.FEATURE_ACTION_BAR);
setContentView(R.layout.activity_main);
// viewPager = new ViewPager(this);
viewPager.setId(R.id.pager);
setContentView(viewPager);
ft = new FragmentPageAdapter(getSupportFragmentManager());
viewPager.setAdapter(ft);
bar = getActionBar();
try {
bar.setHomeButtonEnabled(false);
} catch (Exception e) {
e.printStackTrace();
}
bar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
bar.setDisplayOptions(0, ActionBar.DISPLAY_SHOW_TITLE);
bar.addTab(bar.newTab().setText("A").setTabListener(this));
bar.addTab(bar.newTab().setText("B").setTabListener(this));
bar.addTab(bar.newTab().setText("C").setTabListener(this));
viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
bar.setSelectedNavigationItem(position);
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
}
@Override
public void onTabSelected(ActionBar.Tab tab, FragmentTransaction ft) {
viewPager.setCurrentItem(tab.getPosition());
}
@Override
public void onTabUnselected(ActionBar.Tab tab, FragmentTransaction ft) {
}
@Override
public void onTabReselected(ActionBar.Tab tab, FragmentTransaction ft) {
}
}
FragmentPageAdapter.java:
package com.example.shiza.swipetabs;
//import android.app.FragmentManager;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
/**
* Created by Shiza on 11-06-2015.
*/
public class FragmentPageAdapter extends FragmentPagerAdapter{
public FragmentPageAdapter(FragmentManager fm)
{
super(fm);
}
@Override
public Fragment getItem(int position) {
switch (position)
{
case 1:
return new Fragment_a();
case 2:
return new Fragment_b();
case 3:
return new Fragment_c();
}
return null;
}
@Override
public int getCount() {
return 3;
}
}
Все это хорошо, но когда я получаю следующее предупреждение:
Method invocation 'bar.setHomeButtonEnabled(false)' may produce 'java.lang.NullPointerException
Во время выполнения я получил NullPointerException
в той же строке.
Я искал его на StackOverflow и узнал, что мне нужно использовать библиотеку v7.support
. Я не могу это реализовать. Похоже, что ...
bar = getActionBar();
... возвращается null
. Помимо этого, я получаю много устаревших методов. Пожалуйста, предложите мне лучший учебник. Я принимаю помощь this. Я пробовал все решения на SO, но никто из них не работает. Пожалуйста, помогите мне решить эту проблему.
Вы можете попробовать использовать новую TabLayout библиотеки дизайна: [вкладки стиля Google Play с помощью TabLayout] (https://guides.codepath.com/android/Google-Play-Style- Вкладки-используя-TabLayout) – mrtn