相关疑难解决方法(0)

升级android版本后,获取“重复类android.support.v4.app.INotificationSideChannel”

在android update 3.4之前,我的应用程序运行正常,但是在android升级后,我的应用程序出现合并错误:

"Duplicate class android.support.v4.app.INotificationSideChannel"

android update 3.4
upgrade gradle 5.1.1 
upgrade sdk

Error:
    Duplicate class android.support.v4.app.INotificationSideChannel found in modules classes.jar (androidx.core:core:1.0.0) 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.0) 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.0) 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.0) 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.0) 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.0) and classes.jar …
Run Code Online (Sandbox Code Playgroud)

java android build.gradle android-gradle-plugin

7
推荐指数
2
解决办法
1万
查看次数

Android X向后兼容

我有使用支持库版本27.1.2的Android App。我想使用一个使用Android X(api 28)编写的库。

库版本的名称间距几乎没有问题。

例子...

库中有一个我想与api一起使用的对话框

Dialog.show(androidx.fragment.app.FragmentActivity activity);
Run Code Online (Sandbox Code Playgroud)

但是我所有的活动都在使用

android.support.v4.app.FragmentActivity
Run Code Online (Sandbox Code Playgroud)

并且编译器不喜欢这样。

当前无法将我的项目升级到最新版本,因此,除非这是唯一的解决方案,否则请不要升级答案。

有没有解决此不兼容问题的方法?

提前致谢。

android backwards-compatibility gradle androidx

6
推荐指数
1
解决办法
650
查看次数

有没有一种方法可以将AndroidX和使用支持库的子项目混合使用?

我有一个要升级到的Android项目AndroidX。但是,我使用的模块在尚未迁移到AndroidX的其他应用程序之间共享。我想避免分叉代码,而是在将项目的重置升级为使用AndroidX时更喜欢使用模块的支持库。

目前,我无法导入任何android.support.v7类。因此例如import android.support.v7.widget.AppCompatEditText;失败。

我试图还原build.gradle迁移工具在模块中所做的更改,但这不能防止编译问题。

但是在我gradle.properties还有:

android.useAndroidX=true
android.enableJetifier=true
Run Code Online (Sandbox Code Playgroud)

java android android-support-library androidx

5
推荐指数
2
解决办法
789
查看次数

android.widget.Toolbar 和 android.support.v7.widget.Toolbar 有什么区别?

有人可以向我解释它们之间的区别,为什么它们不能互换?

导入 android.widget.Toolbar 会导致编译错误,而导入 android.support.v7.widget.Toolbar 可以正常工作。

这两个进口有什么区别?

import android.widget.Toolbar;

...

Toolbar toolbar = findViewById(R.id.app_bar);

setSupportActionBar(toolbar);
Run Code Online (Sandbox Code Playgroud)
import android.support.v7.widget.Toolbar;

...

Toolbar toolbar = findViewById(R.id.app_bar);

setSupportActionBar(toolbar);
Run Code Online (Sandbox Code Playgroud)

java android android-appcompat

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

如何修复“错误:无法解析:androidx”?

我再次回去工作以完成我的申请,但是当应用程序开始同步时,它给了我

无法解决:androidx 受影响的模块:href="openFile:D:/.android/Step View/Application/Source Code/app/build.gradle">app

我看到这样的问题,但它对我不起作用。对不起,我的英语不好。

这是我的等级。应用程序

buildscript {
    repositories {
        maven { url 'https://plugins.gradle.org/m2/' }
    }
    dependencies {
        classpath 'gradle.plugin.com.onesignal:onesignal-gradle-plugin:[0.11.0, 0.99.99]'
    }
}
apply plugin: 'com.onesignal.androidsdk.onesignal-gradle-plugin'

repositories {
    maven {
        url 'https://maven.google.com'
    }
}

apply plugin: 'com.android.application'

android {
    compileSdkVersion 28
    defaultConfig {
        applicationId "com.xcoder.stepview"
        minSdkVersion 17
        targetSdkVersion 28
        multiDexEnabled true
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "androidx.connection_light.runner.AndroidJUnitRunner"
        manifestPlaceholders = [
                onesignal_app_id               : '6a2c7692-81ec-4d12-b973-6b78f71f380e',
                // Project number pulled from dashboard, local value is ignored.
                onesignal_google_project_number: 'REMOTE'
        ]
    }
    buildTypes { …
Run Code Online (Sandbox Code Playgroud)

java android gradle build.gradle

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

使用Leakcanary 2.0 alpha 2时清单合并失败

我在我的项目中使用leakcanary 1.6.3查找内存泄漏,使用没有任何问题:

debugImplementation 'com.squareup.leakcanary:leakcanary-android:1.6.3'
Run Code Online (Sandbox Code Playgroud)

现在,我想将其更新为leakcanary 2.0 alpha 2使用:

debugImplementation 'com.squareup.leakcanary:leakcanary-android:2.0-alpha-2
Run Code Online (Sandbox Code Playgroud)

但是当我尝试构建项目时,它给了我manifest merger failed

ERROR: Manifest merger failed : Attribute application@appComponentFactory value=(android.support.v4.app.CoreComponentFactory) from [com.android.support:support-compat:28.0.0] AndroidManifest.xml:22:18-91
is also present at [androidx.core:core:1.0.1] AndroidManifest.xml:22:18-86 value=(androidx.core.app.CoreComponentFactory).
Suggestion: add 'tools:replace="android:appComponentFactory"' to <application> element at AndroidManifest.xml:10:5-50:19 to override.
Run Code Online (Sandbox Code Playgroud)

如何解决此错误?

更新:我正在android.support我的项目中使用库。

android leakcanary androidx

3
推荐指数
1
解决办法
340
查看次数

如何通过android中的数据绑定将onTextChanged侦听器添加到包含布局xml

我在将 onTextChanged 添加到包含布局中的 TextInputEditText 时遇到问题。

有一个 base_edittext_view.xml 如下:

<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">


<android.support.design.widget.TextInputLayout
    android:id="@+id/textInputLayout"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:textColorHint="@color/colorPrimaryText"
    android:background="@drawable/textinputlayout_background"
    app:hintTextAppearance="@style/TextAppearence.App.TextInputLayout">

    <android.support.design.widget.TextInputEditText
        android:id="@+id/edittextItem"
        style="@style/TextStyle"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@drawable/input_border_bottom"
        android:cursorVisible="true"
        android:drawableEnd="@drawable/ic_user"
        android:drawablePadding="@dimen/padding_medium"
        android:gravity="center|left"
        android:hint="@string/email"
        android:inputType="textEmailAddress"
        android:maxLength="50"
        android:paddingBottom="@dimen/padding_medium"
        android:paddingTop="@dimen/padding_medium"
        android:paddingEnd="@dimen/padding_xlarge"
        android:paddingStart="@dimen/padding_medium"
        android:textColor="@color/edittext_text_color"
        android:textColorHint="@color/edittext_hint_text_color"
        android:textSize="@dimen/textsize_medium"
      />

   <!---->

</android.support.design.widget.TextInputLayout>
Run Code Online (Sandbox Code Playgroud)

我想向包含 base_edittext_view.xml 的布局添加一个 onTextChanged 侦听器。

android:onTextChanged="@{(text, start, before, count) -> viewModel.onTextChanged(text)}"
Run Code Online (Sandbox Code Playgroud)

添加 onClick 以包含布局没有问题,但对于 onTextChanegd 我不知道如何实现它。

笔记:

     <include
                android:id="@+id/edittextEmail"
                layout="@layout/edittext_email_base_view"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginTop="@dimen/padding_xxxxlarge"
                />
Run Code Online (Sandbox Code Playgroud)

android android-layout android-databinding android-include addtextchangedlistener

2
推荐指数
1
解决办法
3371
查看次数

Android studio:如何使用 ViewPager 添加标签

我想在片段中添加一个带有 pagerview(可滚动)的选项卡。

    public class MyFragment extends Fragment {
    private FragmentTabHost tabHost;
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        tabHost = new FragmentTabHost(getActivity());
        tabHost.setup(getActivity(), getChildFragmentManager(), R.id.realtabcontent);
        tabHost.addTab(tabHost.newTabSpec("one").setIndicator("One"), OneFragment.class, null);
        tabHost.addTab(tabHost.newTabSpec("two").setIndicator("Two"), TwoFragment.class, null);
        return tabHost;
    }


    @Override
    public void onDestroyView(){
        super.onDestroyView();
        tabHost=null;
    }
}
Run Code Online (Sandbox Code Playgroud)

有了这个布局

<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.app.FragmentTabHost
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@android:id/tabhost"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <LinearLayout
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <android.support.v4.view.ViewPager
            android:id="@+id/realtabcontent"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1"/>

    </LinearLayout>
</android.support.v4.app.FragmentTabHost>
Run Code Online (Sandbox Code Playgroud)

我尝试了几种解决方案,但都不起作用。我需要使用片段,而不是片段活动。编写的代码工作。

tabs android fragment scrollable pageviews

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

两个RecyclerView依赖项之间有什么区别?

我正在使用以下内容RecyclerView

<androidx.recyclerview.widget.RecyclerView ... />
Run Code Online (Sandbox Code Playgroud)

在以下方面具有以下依赖性build.gradle

implementation 'androidx.recyclerview:recyclerview:1.0.0'
Run Code Online (Sandbox Code Playgroud)

点击android studio RecyclerViewin Design模式前面的下载按钮后下载。我运行我的应用程序Oreo,它运行完美。

但是,当我在上运行该应用程序时KitKat,该应用程序被终止,因此我注释掉了RecyclerView及其相关的源代码,然后再次运行该应用程序,这次应用程序在上正确运行KitKat,因此我意识到问题出RecyclerView在该KitKat版本。

现在我做了一些研究,发现我必须使用:

implementation 'com.android.support:recyclerview-v7:28.0.0'
Run Code Online (Sandbox Code Playgroud)

和以下xml标签:

<android.support.v7.widget.RecyclerView ... />
Run Code Online (Sandbox Code Playgroud)

现在我的问题是

<androidx.recyclerview.widget.RecyclerView ... />
implementation 'androidx.recyclerview:recyclerview:1.0.0'
Run Code Online (Sandbox Code Playgroud)

<android.support.v7.widget.RecyclerView ... />
implementation 'com.android.support:recyclerview-v7:28.0.0'
Run Code Online (Sandbox Code Playgroud)

哪一个是为哪个目的而创建的,哪个应该在哪种情况下使用?为什么android studio会下载不支持的版本,KitKat而不是下载几乎先前版本的android所支持的版本?谢谢!!!

android android-support-library android-recyclerview android-support-design

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