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