简体   繁体   中英

Issue with custom component and ViewPager: “Unable to instantiate activity ComponentInfo”

I'm trying to make a SwipeMenu . Which I got working in a small test project but when I'm trying to implement it I get the following errors:

03-23 13:47:04.210: D/AndroidRuntime(28825): Shutting down VM
03-23 13:47:04.210: W/dalvikvm(28825): threadid=1: thread exiting with uncaught exception (group=0x41ef02a0)
03-23 13:47:04.210: E/AndroidRuntime(28825): FATAL EXCEPTION: main
03-23 13:47:04.210: E/AndroidRuntime(28825): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.SverkerSbrg.Spendo/com.SverkerSbrg.Spendo.SwipeMenu}: java.lang.ClassNotFoundException: com.SverkerSbrg.Spendo.SwipeMenu
03-23 13:47:04.210: E/AndroidRuntime(28825):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2034)
03-23 13:47:04.210: E/AndroidRuntime(28825):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2135)
03-23 13:47:04.210: E/AndroidRuntime(28825):    at android.app.ActivityThread.access$700(ActivityThread.java:140)
03-23 13:47:04.210: E/AndroidRuntime(28825):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1237)
03-23 13:47:04.210: E/AndroidRuntime(28825):    at android.os.Handler.dispatchMessage(Handler.java:99)
03-23 13:47:04.210: E/AndroidRuntime(28825):    at android.os.Looper.loop(Looper.java:137)
03-23 13:47:04.210: E/AndroidRuntime(28825):    at android.app.ActivityThread.main(ActivityThread.java:4921)
03-23 13:47:04.210: E/AndroidRuntime(28825):    at java.lang.reflect.Method.invokeNative(Native Method)
03-23 13:47:04.210: E/AndroidRuntime(28825):    at java.lang.reflect.Method.invoke(Method.java:511)
03-23 13:47:04.210: E/AndroidRuntime(28825):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1027)
03-23 13:47:04.210: E/AndroidRuntime(28825):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:794)
03-23 13:47:04.210: E/AndroidRuntime(28825):    at dalvik.system.NativeStart.main(Native Method)
03-23 13:47:04.210: E/AndroidRuntime(28825): Caused by: java.lang.ClassNotFoundException:     com.SverkerSbrg.Spendo.SwipeMenu
03-23 13:47:04.210: E/AndroidRuntime(28825):    at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:61)
03-23 13:47:04.210: E/AndroidRuntime(28825):    at java.lang.ClassLoader.loadClass(ClassLoader.java:501)
03-23 13:47:04.210: E/AndroidRuntime(28825):    at java.lang.ClassLoader.loadClass(ClassLoader.java:461)
03-23 13:47:04.210: E/AndroidRuntime(28825):    at android.app.Instrumentation.newActivity(Instrumentation.java:1068)
03-23 13:47:04.210: E/AndroidRuntime(28825):    at         android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2025)
03-23 13:47:04.210: E/AndroidRuntime(28825):    ... 11 more

Here is my class:

package com.SverkerSbrg.Spendo.Graphics;

import com.SverkerSbrg.Spendo.R;
import com.SverkerSbrg.Spendo.Graphics.TransactionList.*;

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentStatePagerAdapter;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;

public class SwipeMenu extends FragmentActivity {

    private ViewPager mPager;
    private PagerAdapter mPagerAdapter;

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

        mPager = (ViewPager) findViewById(R.id.pager);
        mPagerAdapter = new ScreenSlidePagerAdapter(getSupportFragmentManager());
        mPager.setAdapter(mPagerAdapter);
    }

    @Override
    public void onBackPressed() {
        if (mPager.getCurrentItem() == 0) {
            // If the user is currently looking at the first step, allow the
            // system to handle the
            // Back button. This calls finish() on this activity and pops the
            // back stack.
            super.onBackPressed();
        } else {
            // Otherwise, select the previous step.
            mPager.setCurrentItem(mPager.getCurrentItem() - 1);
        }
    }

    private class ScreenSlidePagerAdapter extends FragmentStatePagerAdapter {

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

        @Override
        public Fragment getItem(int position) {
            return new TransactionList();
        }

        @Override
        public int getCount() {
            return 2;
        }
    }
}

And here is my manifest:

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

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

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.SverkerSbrg.Spendo.MainActivity"
            android:label="@string/app_name" >
        </activity>
        <activity
            android:name="com.SverkerSbrg.Spendo.Menu"
            android:label="@string/title_activity_menu" >
        </activity>
        <activity
            android:name="com.SverkerSbrg.Spendo.SwipeMenu"
            android:label="@string/title_activity_swipe_menu" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

All help is greatly appreciated :)

On ur manifest

package="com.SverkerSbrg.Spendo"

and in ur activity class

package com.SverkerSbrg.Spendo.Graphics;

so u have to keep same name of package.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM