0

我在应用程序中使用支持库实施操作栏。我的应用程序的最低api级别是8,最大值是19.在主要活动类中,我使用android.app.ActionBar导入操作栏,但在获取操作栏时显示以下错误:“调用需要API级别11(当前最小值为8 ):android.app.Activity#getActionBar“。所以我改变导入到'android.support.v7.app.ActionBar'为操作栏,现在错误改变为'不能从android.app.ActionBar转换为android.support.v7.app.ActionBar'。 我的主要活动代码如下。关于使用支持库的选项卡实施操作栏的问题

import android.app.FragmentTransaction; 
import android.os.Bundle; 
import android.support.v4.app.FragmentActivity; 
import android.support.v4.view.ViewPager; 
import android.support.v7.app.ActionBar; 
public class MainActivity extends FragmentActivity { 
ViewPager Tab; 
TabPagerAdapter TabAdapter; 
ActionBar actionBar; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    TabAdapter = new TabPagerAdapter(getSupportFragmentManager()); 
    Tab = (ViewPager)findViewById(R.id.pager); 
    Tab.setOnPageChangeListener(
      new ViewPager.SimpleOnPageChangeListener() { 
       @Override 
       public void onPageSelected(int position) { 
        actionBar = getActionBar(); 
        actionBar.setSelectedNavigationItem(position);     } 
      }); 
    Tab.setAdapter(TabAdapter); 
    actionBar = getActionBar(); 
    //Enable Tabs on Action Bar 
    actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); 
    ActionBar.TabListener tabListener = new ActionBar.TabListener(){ 
    @Override 
    public void onTabReselected(android.app.ActionBar.Tab tab, 
     FragmentTransaction ft) { 
    // TODO Auto-generated method stub 
    } 
    @Override 
    public void onTabSelected(ActionBar.Tab tab, FragmentTransaction ft) { 
      Tab.setCurrentItem(tab.getPosition()); 
     } 
    @Override 
    public void onTabUnselected(android.app.ActionBar.Tab tab, 
     FragmentTransaction ft) { 
    // TODO Auto-generated method stub 
    }}; 
    //Add New Tab 
    actionBar.addTab(actionBar.newTab().setText("Android").setTabListener(tabListener)); 
    actionBar.addTab(actionBar.newTab().setText("iOS").setTabListener(tabListener)); 
    actionBar.addTab(actionBar.newTab().setText("Windows").setTabListener(tabListener)); 
} 
} 

Android清单是

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="com.learn2crack.tab" 
android:versionCode="1" 
android:versionName="1.0" > 
<uses-sdk 
    android:minSdkVersion="8" 
    android:targetSdkVersion="19" /> 
<application 
    android:allowBackup="true" 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" 
    android:theme="@style/AppTheme" > 
    <activity 
     android:name="com.learn2crack.tab.MainActivity" 
     android:label="@string/app_name" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
    </application> 
</manifest> 

main_activity是

<?xml version="1.0" encoding="utf-8"?> 
<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" /> 

windows_frag.xml是

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:gravity="center" 
android:orientation="vertical" > 
<TextView 
    android:id="@+id/textView" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:textSize="50sp"/> 
</LinearLayout> 

我的一个片段是

import android.os.Bundle; 
import android.support.v4.app.Fragment; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.TextView; 
public class Windows extends Fragment { 
@Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
      Bundle savedInstanceState) { 
    View windows = inflater.inflate(R.layout.windows_frag, container, false); 
     ((TextView)windows.findViewById(R.id.textView)).setText("Windows"); 
     return windows; 
}} 

请帮助我。我也实现了以下教程,但错误保持不变。

http://www.androidhive.info/2013/10/android-tab-layout-with-swipeable-views-1/

请不要建议ActionBarSherlock。在尝试其他图书馆之前,我想知道我的问题。

+0

清洁你的活动,并重建它! – mmlooloo 2014-09-27 09:42:03

+0

我做了很多次,但没有成功。 请求大家,如果你看到这个,找不到问题,那么请将它投票,以便其他人可能会发现错误,我可以得到答案。 谢谢 – 2014-09-27 09:45:23

回答

1

如果您正在使用android.support.v7.app.ActionBar支持包,你必须使用

actionBar = getSupportActionBar(); 

,改变这样

public class MainActivity extends ActionBarActivity 
          implements ActionBar.TabListener { 
    // your code goes here 
} 
+0

错误是现在。 “该方法getSupportActionBar()是未定义的类型新ViewPager.SimpleOnPageChangeListener(){}”” – 2014-09-27 09:56:16

+0

@khurrum公共类MainActivity扩展ActionBarActivity 实现ActionBar.TabListener {// 你的代码放在这里 } – sam 2014-09-27 09:58:26

+0

@khurrum实现上述改变,它会工作 – sam 2014-09-27 09:59:59