从Eclipse迁移到Android Studio后,ActionBar不再显示

时间:2017-05-18 12:59:24

标签: android android-actionbar android-actionbar-compat

我最近尝试在最近出现的Android Studio 2.3.1中编辑我4岁的Android应用程序。 导入代码后,我可以在手机上启动它。但是动作栏似乎已经消失了。出了什么问题? 如何告诉android显示操作栏? 我已经实现了这样的操作栏活动:

public class MainActivity extends ActionBarActivity

我的build.gradle看起来像这样:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 17
    buildToolsVersion "25.0.0"

    defaultConfig {
        applicationId "de.my.app"
        minSdkVersion 8
        targetSdkVersion 17
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
        }
    }
}

dependencies {
    compile 'com.android.support:appcompat-v7:18.0.0'
}

我还尝试用更新的命令替换compile命令:

compile 'com.android.support:appcompat-v7:25.3.1'

但是android studio中的同步已经失败了,抛出以下错误:

Error:Execution failed for task ':app:processDebugManifest'.
> Manifest merger failed : uses-sdk:minSdkVersion 8 cannot be smaller than version 9 declared in library [com.android.support:appcompat-v7:25.3.1] /home/user/.android/build-cache/815cafa5312f1d889eb1134b2184a62b3f88d8a3/output/AndroidManifest.xml
    Suggestion: use tools:overrideLibrary="android.support.v7.appcompat" to force usage

我在过去的4年里没有做过很多Android编码,所以我认为ActionBar的内容发生了深刻的变化,但是不应该有一种编译旧代码的方法,因为它使用的是android studio吗? / p>

编辑:
这是manifest.xml:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="de.myApp.myAppDemo"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="17" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/icon_app"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >

        <activity
            android:name="de.myApp.myAppDemo.Splash"
            android:label="@string/app_name"
            android:screenOrientation="landscape" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity
            android:name="de.myApp.myAppDemo.MainActivity"
            android:label="@string/app_name"
            android:screenOrientation="landscape" 
            android:theme="@style/Theme.AppCompat.Light">
            <intent-filter>
                <action android:name="de.myApp.myAppDemo.MAINACTIVITY" />

                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>
        <activity
            android:name="de.myApp.myAppDemo.PropertiesAssign"
            android:label="@string/app_name"
            android:screenOrientation="landscape" >
            <intent-filter>
                <action android:name="de.myApp.myAppDemo.PROPERTIESASSIGN" />

                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>
        <activity
            android:name="de.myApp.myAppDemo.PropertiesView"
            android:label="@string/app_name"
            android:screenOrientation="landscape" >
            <intent-filter>
                <action android:name="de.myApp.myAppDemo.PROPERTIESVIEW" />

                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>
    </application>

</manifest>

1 个答案:

答案 0 :(得分:0)

同时我至少得到了要显示的ActionBar。但是我不得不大幅增加MinSDK和targetSdkVersion / compileSdkVersion:从8,17到15,23。此外,我必须查看SDK-Manager以查看我的系统(23.2.0)上安装了Android Support Library的确切版本,并调整build.gradle中的相应行。

apply plugin: 'com.android.application'

android {
    compileSdkVersion 23      //->modified
    buildToolsVersion "25.0.0"

    defaultConfig {
        applicationId "de.Geo.geodraw"
        minSdkVersion 15      //->modified
        targetSdkVersion 23   //->modified
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
        }
    }
}

dependencies {
    compile "com.android.support:appcompat-v7:23.2.0"    //->modified
}

不确定它是否相关或必要但是this page我还添加了

allprojects {
    repositories {
        jcenter()
        maven {                                 //->modified
            url "https://maven.google.com"      //->modified
        }                                       //->modified
    }
}

在另一个build.gradle文件中。 如果有其他解决方案没有彻底改变minSdktargetSdk,我会接受这个答案。