sandeep gupta
sandeep gupta

Reputation: 301

While i am extending ActionBarActivity, gives error. Why?

i am using Action Bar in my App, extends ActionBarActivity , but it is giving following error in Logcat,

02-12 21:59:53.252: E/AndroidRuntime(7062): FATAL EXCEPTION: main
02-12 21:59:53.252: E/AndroidRuntime(7062): Process: com.example.a_bar, PID: 7062
02-12 21:59:53.252: E/AndroidRuntime(7062): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.a_bar/com.example.a_bar.MainActivity}: java.lang.ClassNotFoundException: Didn't find class "com.example.a_bar.MainActivity" on path: DexPathList[[zip file "/data/app/com.example.a_bar-1.apk"],nativeLibraryDirectories=[/data/app-lib/com.example.a_bar-1, /system/lib, /data/downloads]]
02-12 21:59:53.252: E/AndroidRuntime(7062):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2121)
02-12 21:59:53.252: E/AndroidRuntime(7062):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245)
02-12 21:59:53.252: E/AndroidRuntime(7062):     at android.app.ActivityThread.access$800(ActivityThread.java:135)
02-12 21:59:53.252: E/AndroidRuntime(7062):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
02-12 21:59:53.252: E/AndroidRuntime(7062):     at android.os.Handler.dispatchMessage(Handler.java:102)
02-12 21:59:53.252: E/AndroidRuntime(7062):     at android.os.Looper.loop(Looper.java:136)
02-12 21:59:53.252: E/AndroidRuntime(7062):     at android.app.ActivityThread.main(ActivityThread.java:5021)
02-12 21:59:53.252: E/AndroidRuntime(7062):     at java.lang.reflect.Method.invokeNative(Native Method)
02-12 21:59:53.252: E/AndroidRuntime(7062):     at java.lang.reflect.Method.invoke(Method.java:515)
02-12 21:59:53.252: E/AndroidRuntime(7062):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:827)
02-12 21:59:53.252: E/AndroidRuntime(7062):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:643)
02-12 21:59:53.252: E/AndroidRuntime(7062):     at dalvik.system.NativeStart.main(Native Method)
02-12 21:59:53.252: E/AndroidRuntime(7062): Caused by: java.lang.ClassNotFoundException: Didn't find class "com.example.a_bar.MainActivity" on path: DexPathList[[zip file "/data/app/com.example.a_bar-1.apk"],nativeLibraryDirectories=[/data/app-lib/com.example.a_bar-1, /system/lib, /data/downloads]]

Manifest is as below,

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

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

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.example.a_bar.MainActivity"
            android:label="@string/app_name"
            android:theme="@style/Theme.AppCompat.Light" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

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

</manifest>

style.xml is as below,

<resources>
 <style name="AppBaseTheme" parent="Theme.AppCompat.Light"> </style>
<style name="AppTheme" parent="AppBaseTheme"> </style>

</resources>

MainActivity is as below,

package com.example.a_bar;
import android.support.v7.app.ActionBarActivity;
import android.support.v7.app.ActionBar;
import android.support.v4.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.os.Build;

public class MainActivity extends ActionBarActivity {

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

        if (savedInstanceState == null) {
            getSupportFragmentManager().beginTransaction()
                    .add(R.id.container, new PlaceholderFragment()).commit();
        }
    }

i have added as library project android-support-v7-appcompat, in my App. And added theme into Manifest,

 android:theme="@style/Theme.AppCompat.Light" 

My App get crashed while stated . Why ClassNotFoundException generated ? But when i extend Activity instead of ActionBarActivity it is Running .

Upvotes: 0

Views: 1446

Answers (2)

Apurva
Apurva

Reputation: 7911

There is no need to import android.support.v7.app.ActionBarActivity because minSdkVersion of your project is 11, so the ActionBar will already be included in your app even if you don't extend ActionBarActivity. You need to import support library for ActionBar only when your application's minSdkVersion is less than 11.

Just import android.app.Activity and extend your class to Activity only.

Upvotes: 2

Shankar
Shankar

Reputation: 528

There are dependency issue. add support-v4 library and hope it will solve your issue.

Upvotes: 0

Related Questions