标签: androidx

无法解析android.support.design.迁移到AndroidX后

我试图使用此代码片段获取Snackbar的Textview:

snackbarView.findViewById<TextView>(android.support.design.R.id.snackbar_text)  
Run Code Online (Sandbox Code Playgroud)

但Android Studio无法解析设计库.

如何才能使此代码生效?

android textview android-support-library android-snackbar androidx

53
推荐指数
4
解决办法
7828
查看次数

检查 AAR 元数据时发现问题:androidx.core:core:1.12.0-alpha01 和 androidx.core:core-ktx:1.12.0-alpha01

我正在开发一个项目,但今天构建不再有效。错误如下:

检查AAR元数据时发现2个问题:

  1. 依赖项“androidx.core:core:1.12.0-alpha01”需要依赖它的库和应用程序根据 Android API 的代号“UpsideDownCake”进行编译。

    :app 目前是针对 android-33 编译的。

    建议的操作:使用不同版本的依赖项“androidx.core:core:1.12.0-alpha01”,或者如果您打算尝试该预览版 SDK,则在 build.gradle 文件中将compileSdkPreview 设置为“UpsideDownCake”。

  2. 依赖项“androidx.core:core-ktx:1.12.0-alpha01”需要依赖它的库和应用程序根据 Android API 的代号“UpsideDownCake”进行编译。

    :app 目前是针对 android-33 编译的。

    建议的操作:使用不同版本的依赖项“androidx.core:core-ktx:1.12.0-alpha01”,或者如果您打算尝试该预览版 SDK,则在 build.gradle 文件中将compileSdkPreview 设置为“UpsideDownCake”。

根据我的研究,我了解到根据官方文档,错误消息的版本是昨天发布的。

以下是项目正在使用的 build.gradle 脚本。在我的 build.gradle 中,我有implementation 'androidx.core:core-ktx:1.9.0'. 我不明白为什么在构建阶段添加另一个版本以及为什么androidx.core:core:1.12.0-alpha01添加。

构建.gradle:

buildscript {

    apply from: './dependencies.gradle'

    repositories {
        google()
        mavenCentral()
        jcenter()
        gradlePluginPortal()
    }

    dependencies {
        classpath 'com.android.tools.build:gradle:7.4.0'
        classpath 'com.google.gms:google-services:4.3.14'
        classpath 'com.google.firebase:firebase-crashlytics-gradle:2.9.2'
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$versions.kotlin_version"
        classpath "com.google.dagger:hilt-android-gradle-plugin:$versions.hilt_android"
    }
}

allprojects {
    repositories {
        google()
        mavenCentral()
        jcenter()
        maven { url "https://maven.google.com" …
Run Code Online (Sandbox Code Playgroud)

android kotlin aar androidx

51
推荐指数
4
解决办法
3万
查看次数

TextView上的addFontWeightStyle NoSuchMethodException

我正在为我的项目使用Androidx库,并且我想将字体设置为textview,所以当我将任何字体应用于任何Textview组件时,系统给我的

TypefaceCompatApi21Impl:java.lang.NoSuchMethodException java.lang.NoSuchMethodException:addFontWeightStyle [class java.lang.String,int,boolean]

这种类型的错误在运行时但应用程序没有崩溃.

那么如何克服这个错误呢.

注意:没有android x依赖项它将正常工作.

在我的代码下面:

<androidx.appcompat.widget.AppCompatTextView
        android:id="@+id/menu_tv_title"
        style="@style/font_work_sans_medium"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_gravity="center"
        android:maxLines="1"
        android:ellipsize="end"
        android:paddingEnd="@dimen/_12sdp"
        android:paddingStart="@dimen/_12sdp"
        android:textColor="@android:color/black"
        android:textSize="17sp"
        android:gravity="center"
        tools:text="title"
        tools:visibility="gone"/>
Run Code Online (Sandbox Code Playgroud)

这是风格

<style name="font_work_sans_medium" parent="@android:style/TextAppearance.Small">
    <item name="android:fontFamily">@font/work_sans_medium</item>
</style>
Run Code Online (Sandbox Code Playgroud)

我也像这样以编程方式设置字体

var typeFace: Typeface? = ResourcesCompat.getFont(context, R.font.work_sans_bold)
    getTitleView().setTypeface(typeFace, Typeface.NORMAL)
Run Code Online (Sandbox Code Playgroud)

仍然收到此错误

android material-design androidx

47
推荐指数
4
解决办法
5051
查看次数

在模块类中找到重复的类android.support.v4.app.INotificationSideChannel?

我正在开发新闻应用程序,但从Gradle控制台中收到以下错误

(androidx.core:core:1.0.1) and classes.jar (com.android.support:support-compat:28.0.0)
Duplicate class android.support.v4.app.INotificationSideChannel$Stub found in modules classes.jar (androidx.core:core:1.0.1) and classes.jar (com.android.support:support-compat:28.0.0)
Duplicate class android.support.v4.app.INotificationSideChannel$Stub$Proxy found in modules classes.jar (androidx.core:core:1.0.1) and classes.jar (com.android.support:support-compat:28.0.0)
Duplicate class android.support.v4.graphics.drawable.IconCompatParcelizer found in modules classes.jar (androidx.core:core:1.0.1) and classes.jar (com.android.support:support-compat:28.0.0)
Duplicate class android.support.v4.os.IResultReceiver found in modules classes.jar (androidx.core:core:1.0.1) and classes.jar (com.android.support:support-compat:28.0.0)
Duplicate class android.support.v4.os.IResultReceiver$Stub found in modules classes.jar (androidx.core:core:1.0.1) and classes.jar (com.android.support:support-compat:28.0.0)
Duplicate class android.support.v4.os.IResultReceiver$Stub$Proxy found in modules classes.jar (androidx.core:core:1.0.1) and classes.jar (com.android.support:support-compat:28.0.0)
Duplicate class android.support.v4.os.ResultReceiver found in modules classes.jar (androidx.core:core:1.0.1) and …
Run Code Online (Sandbox Code Playgroud)

chat gradle androidx

44
推荐指数
7
解决办法
4万
查看次数

来自androidx和com.android.support的重复类

我最近更新了我的Android Studio(并且我非常确定Gradle版本),现在在尝试编译项目时遇到了很多错误。这是目前困扰我的那个:

Duplicate class android.support.v4.app.INotificationSideChannel found in modules classes.jar (androidx.core:core:1.0.1) and classes.jar (com.android.support:support-compat:26.1.0)

其次是很多类似的。

我尝试删除所有com.android.support有利于androidx的使用(有关使用替换事物的信息,请参见此处),但是com.android.support即使删除了库,库仍在使用中(一旦尝试再次编译,它们将被重新制作)。

这是我得到的全部错误的链接。

android libraries android-studio android-gradle-plugin androidx

42
推荐指数
3
解决办法
3万
查看次数

将Junit4测试迁移到androidx:是什么导致"委托运行器无法加载"?

我正在将我的应用程序迁移到androidx,我似乎无法让我的单元测试工作.我从Google的AndroidJunitRunnerSample中获取了示例,该示例已更新为使用新的androidx api.尝试运行测试时出现以下错误:

java.lang.Exception: Delegate runner 'androidx.test.internal.runner.junit4.AndroidJUnit4ClassRunner' for AndroidJUnit4 could not be loaded. Check your build configuration.
Run Code Online (Sandbox Code Playgroud)

这是我的模块build.gradle:

android {
    defaultConfig {
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }
}
dependencies {
    // Test dependencies
    androidTestImplementation 'androidx.test:core:1.0.0-beta02'
    androidTestImplementation 'androidx.test.ext:junit:1.0.0-beta02'
    androidTestImplementation 'androidx.test:runner:1.1.0-beta02'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.0-beta02'
    androidTestImplementation "androidx.arch.core:core-testing:2.0.0"
    androidTestImplementation 'androidx.room:room-testing:2.1.0-alpha01'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.0-beta02'
    androidTestImplementation 'org.hamcrest:hamcrest-library:1.3'
}
Run Code Online (Sandbox Code Playgroud)

以下是我的测试结构:

import org.junit.BeforeClass;
import org.junit.Test;
import org.junit.runner.RunWith;

import androidx.test.ext.junit.runners.AndroidJUnit4;

@RunWith(AndroidJUnit4.class)
public class EntityParcelTest {

    @BeforeClass
    public void createEntities() {
        // Setup...
    }

    @Test
    void someTest() {
        // Testing here
    }
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

junit android junit4 androidx

40
推荐指数
5
解决办法
1万
查看次数

扩展类androidx.constraintlayout.widget.ConstraintLayout时出错

使用Android Studio菜单选项Refactor - > Refactor to Androidx迁移到Androidx软件包后...

我收到以下错误:

Error inflating class androidx.constraintlayout.widget.ConstraintLayout
Run Code Online (Sandbox Code Playgroud)

android androidx

37
推荐指数
4
解决办法
2万
查看次数

DrawerLayout卡在滑动上

我正在玩DrawerLayout,我遇到了一个问题.基本上有时当我从屏幕边缘滑动时,DrawerLayout会卡住,直到我将手指从屏幕上抬起(参见下面的屏幕截图)

我不确定是什么,我完全按照谷歌sdk的代码示例.有任何想法吗?

截图错误

这是我在FragmentActivity中唯一拥有的东西:

@Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        final String[] names =
                getResources().getStringArray(R.array.nav_names);
        ArrayAdapter<String> adapter =
                new ArrayAdapter<String>(
                        getActionBar().getThemedContext(),
                        android.R.layout.simple_list_item_1, names);

        final DrawerLayout drawer =
                (DrawerLayout)findViewById(R.id.drawer_layout);
        final ListView navList =
                (ListView) findViewById(R.id.drawer);
        navList.setAdapter(adapter);
        navList.setOnItemClickListener(new AdapterView.OnItemClickListener()
        {

            @Override
            public void onItemClick(AdapterView<?> parent,
                                    View view, final int pos, long id)
            {
                drawer.setDrawerListener(
                        new DrawerLayout.SimpleDrawerListener()
                        {
                            @Override
                            public void onDrawerClosed(View drawerView)
                            {
                                super.onDrawerClosed(drawerView);

                            }
                        });
                drawer.closeDrawer(navList);
            }
        });

    }
Run Code Online (Sandbox Code Playgroud)

编辑:我正在为此添加赏金,因为这是一个非常古老的问题,即使在今天仍然存在最新的Android-X(此处提供样本).以下是它的外观:

在此输入图像描述

我汇报一下谷歌(这里,后来又在这里),但它并没有帮助.

我在这个帖子上尝试了所有现有的解决方案,但都没有.如果有人有一个很好的解决方法(虽然仍然使用DrawerLayout或扩展它,或类似的东西),请提出一个有效的解决方案.

android navigation-drawer androidx

34
推荐指数
1
解决办法
4227
查看次数

不推荐使用androidx.test.InstrumentationRegistry

切换到AndroidX并收到已弃用:import androidx.test.InstrumentationRegistry

如果我下次导入:import androidx.test.platform.app.InstrumentationRegistry 我不能getContext()

例如: val context = InstrumentationRegistry.getContext()

在build.gradle中:

androidTestImplementation 'androidx.test.ext:junit:1.0.0-beta02'
androidTestImplementation 'androidx.test:runner:1.1.0-beta02'
Run Code Online (Sandbox Code Playgroud)

android deprecated androidx

34
推荐指数
4
解决办法
1万
查看次数

PreferenceFragmentCompat在PreferenceCategory上有填充,我无法摆脱它

所以我一直在尝试使用androidx.preference.PreferenceFragmentCompat创建一个设置活动,它一切正常.

但是由于某种原因,在偏好类别和偏好本身上都存在一些填充.我设法通过使用app:iconSpaceReserved ="false"来摆脱首选项的填充,但这似乎不适用于类别.

图片

我已经尝试了所有各种主题,PreferenceThemeOverlay.v14.Material等但它们似乎没有什么区别

这是我的一切代码!

SettingsActivity.java

import android.os.Bundle;

import androidx.appcompat.app.ActionBar;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;

public class SettingsActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_settings);

        Toolbar toolbar = findViewById(R.id.settings_toolbar);
        setSupportActionBar(toolbar);
        ActionBar actionBar = getSupportActionBar();
        if (actionBar != null) {
            actionBar.setDisplayHomeAsUpEnabled(true);
            actionBar.setDisplayShowTitleEnabled(false);
        }

    }
}
Run Code Online (Sandbox Code Playgroud)

activity_settings.xml

<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".SettingsActivity">

    <androidx.appcompat.widget.Toolbar
        android:id="@+id/settings_toolbar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <TextView
            style="@style/ToolbarTitle"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/title_settings"
            android:textColor="@color/font_dark_primary" />

    </androidx.appcompat.widget.Toolbar>

    <fragment
        android:name="com.henrytwist8gmail.fullcart.SettingsTestFragment"
        android:tag="settings_fragment"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintTop_toBottomOf="@id/settings_toolbar" />

</androidx.constraintlayout.widget.ConstraintLayout>
Run Code Online (Sandbox Code Playgroud)

SettingsTestFragment.java

import android.os.Bundle; …
Run Code Online (Sandbox Code Playgroud)

android android-appcompat android-preferences preferencefragment androidx

33
推荐指数
4
解决办法
4742
查看次数