这件事让我疯了。我似乎无法让我的应用程序正确编译。我在我的应用程序中添加了支持库,方法是复制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.+'
}
答案 0 :(得分:37)
您需要将Activity更改为ActionBarActivity
public class mainActivity extends ActionBarActivity
已弃用ActionBarActivity,因此请使用以下
public class mainActivity extends AppCompatActivity
答案 1 :(得分:1)
您的活动需要扩展ActionBarActivity(提供getSupportActionBar)。
答案 2 :(得分:0)
从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'com.android.support:support-v4:19.1。+'
Android Studio已经通知您,但请确保您与gradle同步。
答案 3 :(得分:0)
这很简单,只需扩展AppCompatActivity而不是Activity。
请注意,您需要更改主题以避免
例外: 您需要将Theme.AppCompat主题(或后代)与此活动一起使用
使用AppCompatActivity时
答案 4 :(得分:0)
extends Activity,如果你使用的是appcompat,则需要extends AppCompatActivity
答案 5 :(得分:-1)
这将解决问题:
import android.support.v7.widget.Toolbar;