Невозможно импортировать android.support.v7 (appcompat) - Неразрешенная библиотека - PullRequest
0 голосов
/ 02 октября 2018

Я попытался импортировать эту библиотеку поддержки в свой проект, но не могу заставить ее работать.

Прежде всего, я не могу его найти.Когда я нажимаю кнопку + на вкладке Зависимости и ищу ее.Я нашел android.support.v4, но мне нужен также v7.Я где-то читал, что библиотека может быть устаревшей.

Так что в моем коде он не может импортировать android.support.v7.widget.ShareActionProvider v7 выделен красным, потому что его невозможно решить.Я следовал инструкциям о том, как добавить библиотеку.Но все еще не могу решить проблему.Я делал обычные шаги как чистые, синхронизировал файлы Gradle, делали недействительными ссылки и т. Д. *

Вот часть моего кода из mainactivity

    import android.content.Intent
    import android.os.Bundle
    import android.support.v4.view.MenuItemCompat
    import android.view.Menu
    import android.view.MenuItem
    //import androidx.appcompat.widget.ShareActionProvider
    import androidx.appcompat.widget.Toolbar

    //import androidx.core.view.MenuItemCompat
    //import android.support.v4.view.MenuItemCompat
    //import androidx.core.view.MenuItemCompat.getActionProvider

    import android.support.v7.app.AppCompatActivity
    import android.support.v7.widget.ShareActionProvider
    //import android.widget.ShareActionProvider



    class MainActivity : AppCompatActivity() {
        private var shareActionProvider : ShareActionProvider? = null

    import android.content.Intent
    import android.os.Bundle
    import android.support.v4.view.MenuItemCompat
    import android.view.Menu
    import android.view.MenuItem
    //import androidx.appcompat.widget.ShareActionProvider
    import androidx.appcompat.widget.Toolbar

    //import androidx.core.view.MenuItemCompat
    //import android.support.v4.view.MenuItemCompat
    //import androidx.core.view.MenuItemCompat.getActionProvider

    import android.support.v7.app.AppCompatActivity
    import android.support.v7.widget.ShareActionProvider
    //import android.widget.ShareActionProvider


    class MainActivity : AppCompatActivity() {
        private var shareActionProvider : ShareActionProvider? = null

        override fun onCreate(savedInstanceState: Bundle?) {
            super.onCreate(savedInstanceState)
            setContentView(R.layout.activity_main)
            val toolbar = findViewById(R.id.toolbar) as Toolbar
            setSupportActionBar(toolbar)
        }

        override fun onCreateOptionsMenu(menu : Menu): Boolean {
            getMenuInflater().inflate(R.menu.menu_main, menu)
            val menuItem = menu.findItem(R.id.action_share) as MenuItem
            shareActionProvider = MenuItemCompat.getActionProvider(menuItem) as ShareActionProvider
            setShareActionIntent("Want to join me for pizza?")
            return super.onCreateOptionsMenu(menu)
        }

        private fun setShareActionIntent(text : String) {
            val intent = Intent(Intent.ACTION_SEND)
            intent.type = "text/plain"
            intent.putExtra(Intent.EXTRA_TEXT, text)
            shareActionProvider!!.setShareIntent(intent)
        }

        override fun onOptionsItemSelected(item : MenuItem) : Boolean {
            when(item.itemId) {
                R.id.action_create_order -> {
                    val intent = Intent(this, OrderActivity::class.java)
                    startActivity(intent)
                    return true
                }
                else -> return super.onOptionsItemSelected(item)
            }
}
}

Это мой файл gradle.build

 // Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {
    ext.kotlin_version = '1.2.71'
    repositories {
        google()
        jcenter()
        maven { url '../pluginrepo' }
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.2.0-beta05'
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        google()
        jcenter()
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

Это файл моего приложения (build.gradle)

apply plugin: 'com.android.application'

apply plugin: 'kotlin-android'

apply plugin: 'kotlin-android-extensions'

android {
    compileSdkVersion 28
    defaultConfig {
        applicationId "com.gandalf.bitsandpizza"
        minSdkVersion 19
        targetSdkVersion 28
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    implementation fileTree(include: ['*.jar'], dir: 'libs')
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
    implementation 'androidx.constraintlayout:constraintlayout:1.1.2'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'androidx.test:runner:1.1.0-alpha3'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.0-alpha3'
    //    implementation 'com.android.support:support-core-utils:27.0.0'
    implementation 'com.google.android:support-v4:r7'
    implementation 'com.android.support:appcompat-v7:28.0.+'
    //    implementation 'com.android.support:appcompat-v7:27.1.1'
    implementation 'com.android.support:support-core-utils:28.0.+'
}

Это основано на рефакторинге, предложенном в ответе.

Теперь проблема решена.Это обновленный файл gradle.build из приложения

apply plugin: 'com.android.application'

apply plugin: 'kotlin-android'

apply plugin: 'kotlin-android-extensions'

android {
    compileSdkVersion 28
    defaultConfig {
        applicationId "com.some.name"
        minSdkVersion 19
        targetSdkVersion 28
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation"org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
    implementation 'com.android.support:appcompat-v7:28.0.0'
    implementation 'com.android.support.constraint:constraint-layout:1.1.3'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.2'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
}

Ответы [ 5 ]

0 голосов
/ 01 апреля 2019

Я использую их в gradle.properties

android.useAndroidX=true
android.enableJetifier=false
0 голосов
/ 07 января 2019

1) Просто нажмите ALT + ENT и выберите Migrate App to AppCompat.

2) ImageView переименовывается в AppCompatImageView.

3) Нажмите ALT + ENT, чтобы окончательно импортировать класс.проблема решена!

Или выполните импорт androidx.appcompat.widget.AppCompatImageView;

0 голосов
/ 02 октября 2018

Так что в моем коде он не может импортировать android.support.v7.widget.ShareActionProvider v7 в красном, потому что он не может быть решен

Я бы хотел, чтобы это былоединственная проблема в ваших кодах.Вы добавили:

implementation 'com.google.android:support-v4:r7'
implementation 'com.android.support:appcompat-v7:28.0.+' // Use specific version like 28.0.0 in future for this

Что относится к v4 и v7 AppCompat, но ваш Toolbar и тесты + ConstraintLayout используют AndroidXзависимостей.Это на самом деле странно и сбивает с толку даже меня!

Для использования ShareActionProvider, который доступен с AppCompat, вынеобходимо убедиться, что ваше приложение перенесено на AndroidX или не первым!

Я считаю, что это происходит, потому что похоже, что ваш проект перенесен на AndroidX, и это вводит в заблуждение IDE для использования AppCompatили AndroidX.

Просто перейдите к Refactor, выберите migrate to AppCompat, если вы пытаетесь использовать зависимости V7.

0 голосов
/ 08 октября 2018

После сильной головной боли.Я обнаружил, что проблема была в версии Android Studio, которую я использовал.Я использовал бета-версию, и по некоторым причинам библиотеки были перепутаны.Когда я перешел на стабильную версию все стало работать нормально.

0 голосов
/ 02 октября 2018

Я использую эти зависимости

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation"org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
    implementation 'com.android.support:appcompat-v7:28.0.0'
    implementation 'com.android.support.constraint:constraint-layout:1.1.3'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.2'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
}

Там импортирует

import android.support.v4.view.MenuItemCompat
import android.support.v7.widget.ShareActionProvider

И там нет красного.

Попробуйте также очистить код

Как сказал @Мохсен, вы также можете попытаться сделать это

enter image description here

...