ANDROID: не удается разрешить метод getSupportActionBar()
Эта штука сводит меня с ума. Я не могу заставить мое приложение правильно компилироваться. Я добавил библиотеки поддержки в свое приложение, скопировав файлы jar, поместив их в папку libs, щелкнув правой кнопкой мыши и добавив их как библиотеку.
Я пробовал расширить ActionBaractivity и ничего до сих пор не получил этот метод распознан.
Я использую Android studio версии 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>
Строить.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.+'
}
5 ответов:
Вам нужно изменить Activity на ActionBarActivity
public class mainActivity extends ActionBarActivityActionBarActivity устарел, поэтому, пожалуйста, используйте следующий
public class mainActivity extends AppCompatActivity
Удалите файлы библиотеки поддержки из каталога libs, как вы уже определили библиотеку поддержки в файле 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 ' com.андроид.поддержка: поддержка-v4: 19.1.+'
Android Studio уже уведомит вас, но убедитесь, что вы синхронизируетесь с gradle.
- вместо того, чтобы расширяться из Activity, расширяйтесь из ActionBarActivity.
Это просто, просто расширьте AppCompatActivity вместо Activity.
Пожалуйста, обратите внимание, что вам нужно изменить тему, чтобы избежать
Исключение : Вам нужно использовать тему.Тема AppCompat (или потомок) с этим действием
При использовании AppCompatActivity
Comments