Unable to show tabs with swipe gesture in android. This app is only running on android 4.0 and above but not getting run on android2.2, why? Can anyone tell me what this log-cat is demanding for?

suggestions please

Thanks for your precious time!..

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>
有帮助吗?

解决方案

Can you check the activity_main.xml, it seems there is a line missing there.

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

EDIT Check out the Support Libraries you are using. There must be some incompatibility. Probably about the Action Bar you are using.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top