我正在创建具有可滑动视图的Android标签布局,但我收到了一些错误。我不知道如何解决这些错误。
代码 -
@SuppressLint("NewApi")
public class Types extends FragmentActivity implements ActionBar.TabListener{
ImageView left, right;
Intent objIntent;
private ViewPager viewPager;
private TabsPagerAdapter mAdapter;
private ActionBar actionBar;
private String[] tabs = { "type1", "type2", "type3", "type4", "type5", "type6", "type7", "type8" };
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.types);
viewPager = (ViewPager) findViewById(R.id.pager);
actionBar = getActionBar();
mAdapter = new TabsPagerAdapter(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) {
}
});
}
}
@Override
public void onTabReselected(Tab tab, FragmentTransaction ft) {
}
@Override
public void onTabSelected(Tab tab, FragmentTransaction ft) {
viewPager.setCurrentItem(tab.getPosition());
}
@Override
public void onTabUnselected(Tab tab, FragmentTransaction ft) {
}
@Override
protected void onPause() {
super.onPause();
objIntent = new Intent(Types.this, PlayAudio.class);
stopService(objIntent);
}
@Override
public void onBackPressed() {
super.onBackPressed();
objIntent = new Intent(Types.this, PlayAudio.class);
stopService(objIntent);
startActivity(new Intent (Types.this, MainActivity.class));
finish();
}
@Override
public void onResume()
{
super.onResume();
objIntent = new Intent(Types.this, PlayAudio.class);
startService(objIntent);
}
}
的logcat -
01-29 01:45:36.094: E/AndroidRuntime(1191): Caused by: java.lang.NullPointerException
01-29 01:45:36.094: E/AndroidRuntime(1191): at com.info.abc.Types.onCreate(Types.java:38)
01-29 01:45:36.094: E/AndroidRuntime(1191): at android.app.Activity.performCreate(Activity.java:5243)
01-29 01:45:36.094: E/AndroidRuntime(1191): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
01-29 01:45:36.094: E/AndroidRuntime(1191): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2140)
01-29 01:45:36.094: E/AndroidRuntime(1191): ... 11 more
这是第38行:
actionBar.setHomeButtonEnabled(false);
导入文件 -
import android.support.v7.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.view.ViewPager;
答案 0 :(得分:1)
如果您的活动没有title bar
,则方法getActionBar()
可以返回null。
您有两种方法可以解决此问题:
在getWindow().requestFeature(Window.FEATURE_ACTION_BAR);
setContentView
在Manifest
指定支持ActionBar
的主题
同时确保您定位的是正确的Android版本,例如<uses-sdk android:minSdkVersion="11" />
进一步的信息转到此Link.
答案 1 :(得分:0)
通过查看您的代码,我假设您正在使用较低版本(低于API 11)设备测试应用程序。这就是为什么您获得异常。ActionBar
在API级别11中引入。现在为了使它工作,你有以下两种方式,
1.将您的最小SDK值更改为API 11.
2.从API级别7使用支持android-support-v7-appcompat
的{{1}}库。
ActionBar
,您的活动应该延长ActionBarCompat
。ActionBarActivity
有关详细信息,请访问以下网站: http://android-developers.blogspot.in/2013/08/actionbarcompat-and-io-2013-app-source.html