Question

I have developed an application and in this application I use action bar and WebView when I check on android version 3.2 and higher version it worked fine but when I run that application on android version 2.3 its going to crash application so what is reason of crashing application

my code is here

import android.annotation.SuppressLint;
import android.annotation.TargetApi;
import android.app.ActionBar;
import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.view.MenuItem;
import android.view.View;
import android.widget.ImageView;


public class about extends Activity
{

    private ImageView img;
    @Override
    @TargetApi(Build.VERSION_CODES.HONEYCOMB)
    @SuppressLint("NewApi")


    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.about_main);

        ActionBar ab=getActionBar();
        ab.setTitle("About");
        ab.setDisplayHomeAsUpEnabled(true);


        img = (ImageView)findViewById(R.id.iv);
        img.setOnClickListener(new View.OnClickListener(){
            public void onClick(View v){
                Intent intent = new Intent();
                intent.setAction(Intent.ACTION_VIEW);
                intent.addCategory(Intent.CATEGORY_BROWSABLE);
                intent.setData(Uri.parse("http://earthcorporation.co.in"));
                startActivity(intent);
            }
        });

    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {

        switch (item.getItemId())
        {
            case android.R.id.home :

                finish();
                return true;

            default:

                return super.onOptionsItemSelected(item);
        }


    }
}

manifest file

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

    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

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

    <application
        android:allowBackup="true"
        android:icon="@drawable/satbar_icon"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.earth.satbara_gujarat.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>
        <activity android:name="com.earth.satbara_gujarat.about"></activity>
        <activity android:name="com.earth.satbara_gujarat.feedback"></activity>


<activity android:name="com.mopub.mobileads.MoPubActivity" android:configChanges="keyboardHidden|orientation"/>
<activity android:name="com.mopub.mobileads.MraidActivity" android:configChanges="keyboardHidden|orientation"/>
<activity android:name="com.mopub.mobileads.MraidBrowser" android:configChanges="keyboardHidden|orientation"/>
<activity android:name="com.mopub.mobileads.MraidVideoPlayerActivity" android:configChanges="keyboardHidden|orientation"/>

<activity
      android:name="com.google.ads.AdActivity"
      android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize" />


</application>
</manifest>
Was it helpful?

Solution 2

instead of Activity u have to extends ActionBarActivity of appcompat v7 support library

and import this

import android.support.v7.app.ActionBarActivity;

instead of

import android.app.Activity;

use getSupportActionBar() not getActionBar()

ActionBar actionBar = getSupportActionBar();

More about ActionBarActivity that will solve ur problem

OTHER TIPS

If supporting API levels lower than 11:

import android.support.v7.app.ActionBar

And you implement like

ActionBar actionBar = getSupportActionBar();

If supporting only API level 11 and higher:

import android.app.ActionBar

And you implement like

ActionBar actionBar = getActionBar();

So before you can add the action bar, you must set up your project with the appcompat v7 support library by following the instructions in the Support Library Setup. and for more information go to actionbarcompat

Since you want to support action bar in lower versions , you should use ActionBarCompat or SherlockActionBar support libraries.

http://actionbarsherlock.com/

http://android-developers.blogspot.in/2013/08/actionbarcompat-and-io-2013-app-source.html

All you need to do is extends your activity with SherlockActivity instead of Activity and use getSupportActionBar() instead of using getActionBar().

You can use action bar themes for hollow look. I personally prefer SherlockActionBar over ActionBarCompat

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top