Reputation: 727
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>
Upvotes: 0
Views: 459
Reputation: 5893
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.
Upvotes: 1