0
我正試圖在我的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的幫助。我已經嘗試過所有的解決方案,但都沒有工作。請幫我解決這個問題。
您可以嘗試使用設計庫的新TabLayout:[Google Play Style Tabs using TabLayout](https://guides.codepath.com/android/Google-Play-Style-選項卡 - 使用 - TabLayout) – mrtn