2014-05-12 22 views
0

無法在android中使用滑動手勢顯示標籤。 這個應用程序只運行在Android 4.0及以上版本,但沒有在android2.2上運行,爲什麼? 誰能告訴我這個日誌貓需要什麼嗎?滑動手勢的標籤在android_2.2上不起作用,但支持android_4.0.3

建議請

感謝您的寶貴時間!..

logcat的

05-12 09:06:03.615: E/AndroidRuntime(360): FATAL EXCEPTION: main 
05-12 09:06:03.615: E/AndroidRuntime(360): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{info.androidhive.tabsswipe/info.androidhive.tabsswipe.MainActivity}: java.lang.ClassNotFoundException: info.androidhive.tabsswipe.MainActivity in loader dalvik.system.PathClassLoader[/data/app/info.androidhive.tabsswipe-2.apk] 
05-12 09:06:03.615: E/AndroidRuntime(360): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2585) 
05-12 09:06:03.615: E/AndroidRuntime(360): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679) 
05-12 09:06:03.615: E/AndroidRuntime(360): at android.app.ActivityThread.access$2300(ActivityThread.java:125) 
05-12 09:06:03.615: E/AndroidRuntime(360): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033) 
05-12 09:06:03.615: E/AndroidRuntime(360): at android.os.Handler.dispatchMessage(Handler.java:99) 
05-12 09:06:03.615: E/AndroidRuntime(360): at android.os.Looper.loop(Looper.java:123) 
05-12 09:06:03.615: E/AndroidRuntime(360): at android.app.ActivityThread.main(ActivityThread.java:4627) 
05-12 09:06:03.615: E/AndroidRuntime(360): at java.lang.reflect.Method.invokeNative(Native Method) 
05-12 09:06:03.615: E/AndroidRuntime(360): at java.lang.reflect.Method.invoke(Method.java:521) 
05-12 09:06:03.615: E/AndroidRuntime(360): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 
05-12 09:06:03.615: E/AndroidRuntime(360): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 
05-12 09:06:03.615: E/AndroidRuntime(360): at dalvik.system.NativeStart.main(Native Method) 
05-12 09:06:03.615: E/AndroidRuntime(360): Caused by: java.lang.ClassNotFoundException: info.androidhive.tabsswipe.MainActivity in loader dalvik.system.PathClassLoader[/data/app/info.androidhive.tabsswipe-2.apk] 
05-12 09:06:03.615: E/AndroidRuntime(360): at dalvik.system.PathClassLoader.findClass(PathClassLoader.java:243) 
05-12 09:06:03.615: E/AndroidRuntime(360): at java.lang.ClassLoader.loadClass(ClassLoader.java:573) 
05-12 09:06:03.615: E/AndroidRuntime(360): at java.lang.ClassLoader.loadClass(ClassLoader.java:532) 
05-12 09:06:03.615: E/AndroidRuntime(360): at android.app.Instrumentation.newActivity(Instrumentation.java:1021) 
05-12 09:06:03.615: E/AndroidRuntime(360): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2577) 
05-12 09:06:03.615: E/AndroidRuntime(360): ... 11 more 

的Manifest.xml

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="info.androidhive.tabsswipe" 
android:versionCode="1" 
android:versionName="1.0" > 

<uses-sdk 
    android:minSdkVersion="8" 
    android:targetSdkVersion="17" /> 

<application 
    android:allowBackup="true" 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" 
    android:theme="@style/AppTheme" > 
    <activity 
     android:name="info.androidhive.tabsswipe.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> 

MainActivity.java

public class MainActivity extends FragmentActivity implements 
    ActionBar.TabListener { 

private ViewPager viewPager; 
private TabsPagerAdapter mAdapter; 
private ActionBar actionBar; 
// Tab titles 
private String[] tabs = { "Top Rated", "Games", "Movies" }; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    // Initilization 
    viewPager = (ViewPager) findViewById(R.id.pager); 
    actionBar = getActionBar(); 
    mAdapter = new TabsPagerAdapter(getSupportFragmentManager()); 

    viewPager.setAdapter(mAdapter); 
    actionBar.setHomeButtonEnabled(false); 
    actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);   

    // Adding Tabs 
    for (String tab_name : tabs) { 
     actionBar.addTab(actionBar.newTab().setText(tab_name) 
       .setTabListener(this)); 
    } 

    /** 
    * on swiping the viewpager make respective tab selected 
    * */ 
    viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() { 

     @Override 
     public void onPageSelected(int position) { 
      // on changing the page 
      // make respected tab selected 
      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) { 
    // on tab selected 
    // show respected fragment view 
    viewPager.setCurrentItem(tab.getPosition()); 
} 

@Override 
public void onTabUnselected(Tab tab, FragmentTransaction ft) { 
} 
} 

TabsPagerAdapter.java

public class TabsPagerAdapter extends FragmentPagerAdapter { 

public TabsPagerAdapter(FragmentManager fm) { 
    super(fm); 
} 

@Override 
public Fragment getItem(int index) { 

    switch (index) { 
    case 0: 
     // Top Rated fragment activity 
     return new TopRatedFragment(); 
    case 1: 
     // Games fragment activity 
     return new GamesFragment(); 
    case 2: 
     // Movies fragment activity 
     return new MoviesFragment(); 
    } 

    return null; 
} 

@Override 
public int getCount() { 
    // get item count - equal to number of tabs 
    return 3; 
}} 

TopRatedFragment.java

public class TopRatedFragment extends Fragment { 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
     Bundle savedInstanceState) { 

    View rootView = inflater.inflate(R.layout.fragment_top_rated, container, false); 

    return rootView;  
}} 

GamesFragment.java

public class GamesFragment extends Fragment { 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
     Bundle savedInstanceState) { 

    View rootView = inflater.inflate(R.layout.fragment_games, container, false); 

    return rootView; 
}} 

MoviesFragment.java

public class MoviesFragment extends Fragment { 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
     Bundle savedInstanceState) { 

    View rootView = inflater.inflate(R.layout.fragment_movies, container, false); 

    return rootView; 
}} 

activity_main.xml中

<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"> 

</android.support.v4.view.ViewPager> 
+0

@p在這裏你的錯誤不是關於手勢,而是關於編譯器沒有找到你的一些類。 –

回答

1

可以檢查activity_main.xml中,似乎有一條線缺少那裏。

<?xml version="1.0" encoding="UTF-8"?> 

編輯 退房您正在使用的支持庫。一定有一些不兼容。可能是關於您正在使用的Action Bar。

+0

但相同的XML支持android4.0及以上? – prabu