getSupportActionBar() The method getSupportActionBar() is undefined for the type TaskActivity. Why?

Евгений Смирнов picture Евгений Смирнов · Jul 27, 2013 · Viewed 103.1k times · Source

I was recommended to extend my Activity class from ActionBarActivity

Here is the previous code:

import android.support.v7.app.ActionBar;
import android.support.v7.app.ActionBarActivity;  

public class MainActivity extends Activity  {

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

I wrote new application and followed advice.

import android.os.Bundle;
    import android.support.v7.app.ActionBar;
    import android.support.v7.app.ActionBarActivity;            

    public class MainActivity extends ActionBarActivity {

          @Override
          public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            ActionBar actionBar =getSupportActionBar();
            actionBar.setDisplayHomeAsUpEnabled(true);            
            setContentView(R.layout.activity_main);
          }

          @Override
          public boolean onCreateOptionsMenu(Menu menu) {
            getMenuInflater().inflate(R.menu.main, menu);
            return true;
          }            
        }

If I use ACtionBarActivity instead of Activity, I get the following error on the phone, when I try to run it:

The method getSupportActionBar() is undefined for the type TaskActivity

Answer

MH. picture MH. · Jul 27, 2013

Your class needs to extend from ActionBarActivity, rather than a plain Activity in order to use the getSupport*() methods.

Update [2015/04/23]: With the release of Android Support Library 22.1, you should now extend AppCompatActivity. Also, you no longer have to extend ActionBarActivity or AppCompatActivity, as you can now incorporate an AppCompatDelegate instance in any activity.