ANDROID:无法解析方法getSupportActionBar()

时间:2014-08-02 23:06:19

标签: java android

这件事让我疯了。我似乎无法让我的应用程序正确编译。我在我的应用程序中添加了支持库,方法是复制jar文件,将它们放入libs文件夹,右键单击并将它们添加为库。

我尝试过扩展ActionBaractivity并且没有任何东西仍然无法识别该方法。

我使用的是Android工作室版本0.8.2。

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);
    }
}

清单

<?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.+'
    }

6 个答案:

答案 0 :(得分:37)

您需要将Activity更改为ActionBarActivity

public class mainActivity extends ActionBarActivity

已弃用ActionBarActivity,因此请使用以下

public class mainActivity extends AppCompatActivity

答案 1 :(得分:1)

您的活动需要扩展ActionBarActivity(提供getSupportActionBar)。

答案 2 :(得分:0)

  1. 从libs目录中删除支持库jar,因为您已经在gradle文件中定义了支持库。

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

    支持库已更新,因此我将您的gradle依赖项更新为:compile'c​​om.android.support:support-v4:19.1。+'

  2. Android Studio已经通知您,但请确保您与gradle同步。

  3. 而不是从Activity扩展,从ActionBarActivity扩展。

答案 3 :(得分:0)

这很简单,只需扩展AppCompatActivity而不是Activity。

请注意,您需要更改主题以避免

例外: 您需要将Theme.AppCompat主题(或后代)与此活动一起使用

使用AppCompatActivity时

答案 4 :(得分:0)

extends Activity,如果你使用的是appcompat,则需要extends AppCompatActivity

答案 5 :(得分:-1)

这将解决问题:

import android.support.v7.widget.Toolbar;