ANDROID: Cannot resolve method getSupportActionBar()

匿名 (未验证) 提交于 2019-12-03 03:05:02

问题:

This thing is driving me nuts. I can't seem to get my app to compile correctly. I have added the support libraries in my app by copying the jar files, dropping them into libs folder, right click and adding them as library.

I have tried extending ActionBaractivity and nothing still not getting that method recognized.

I am using Android studio version 0.8.2.

Class

import android.app.Activity; import android.os.Bundle; import android.support.v4.widget.DrawerLayout; import android.view.Menu; import android.support.v7.app.ActionBar; import android.support.v7.app.ActionBarActivity; import android.view.MenuItem; import android.view.View; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.ListView; import android.widget.Toast;   public class mainActivity extends Activity implements AdapterView.OnItemClickListener {      private DrawerLayout drawerLayout;     private ListView listView;     private String[] navMenuArray;     @Override     protected void onCreate(Bundle savedInstanceState) {         super.onCreate(savedInstanceState);         setContentView(R.layout.activity_main);         drawerLayout = (DrawerLayout) findViewById(R.id.drawerLayout);         navMenuArray = getResources().getStringArray(R.array.navmenu);         listView =(ListView) findViewById(R.id.drawerList);         listView.setAdapter(new ArrayAdapter<>(this, android.R.layout.simple_expandable_list_item_1, navMenuArray));         listView.setOnItemClickListener(this);     }      @Override     public void onItemClick(AdapterView<?> parent, View view, int position, long id) {         //handles what happens when an item in the menu is clicked         Toast.makeText(this,navMenuArray[position]+" was selected", Toast.LENGTH_SHORT).show();         selectItem(position);     }     public void selectItem(int position){         listView.setItemChecked(position, true);         setTitle(navMenuArray[position]);     }     public void setTitle(String title){         getSupportActionbar().setTitle(title);     } } 

MANIFEST

<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android"     package="com.myapp" >      <application         android:allowBackup="true"         android:icon="@drawable/ic_launcher"         android:label="@string/app_name"         android:theme="@style/Theme.AppCompat" >         <activity             android:name=".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> 

build.gradle

apply plugin: 'com.android.application'  android {     compileSdkVersion 20     buildToolsVersion '20.0.0'      defaultConfig {         applicationId "com.myapp"         minSdkVersion 14         targetSdkVersion 20         versionCode 1         versionName "1.0"     }     compileOptions{         sourceCompatibility JavaVersion.VERSION_1_7         targetCompatibility JavaVersion.VERSION_1_7     }      buildTypes {         release {             runProguard false             proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'         }     } }      dependencies {         compile fileTree(dir: 'libs', include: ['*.jar'])         compile 'com.android.support:support-v4:18.0.+'         compile 'com.android.support:appcompat-v7:18.0.+'     } 

回答1:

you need to change Activity to ActionBarActivity

public class mainActivity extends ActionBarActivity

ActionBarActivity has been deprecated so please use the following

public class mainActivity extends AppCompatActivity



回答2:

Your activity needs to extend ActionBarActivity (which provides getSupportActionBar).



回答3:

  1. Remove the support library jars from the libs directory as you already defined the support library in your gradle file.

    dependencies {     compile fileTree(dir: 'libs', include: ['*.jar'])     compile 'com.android.support:support-v4:18.0.+'     compile 'com.android.support:appcompat-v7:18.0.+' } 

    The support library has been updated so I would update your gradle dependencies to: compile 'com.android.support:support-v4:19.1.+'

  2. Android Studio will already notify you but make sure you sync with gradle.

  3. Rather than extending from Activity, extend from ActionBarActivity.


回答4:

It is simple, just extend AppCompatActivity instead of Activity.

Please Note that you need to change theme to avoid

Exception : You need to use a Theme.AppCompat theme (or descendant) with this activity

while using AppCompatActivity



回答5:

This will solve the problem:

import android.support.v7.widget.Toolbar; 


标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!