标签: androidx

将项目迁移到 androidx 后,EditTextPreference 不显示数字键盘

使用Migrate to AndroidX...Android Studio 提供的功能将我的项目迁移到 AndroidX 并相应地更改了我的依赖项以使所有内容都按预期运行后,我遇到了一个无法解决的小问题。

为了在我的应用程序中设置设备编号,我使用了如下定义的 EditTextPreference,pref_screen.xml它在 PreferenceFragmentCompat 类中设置 setPreferencesFromResource(R.xml.pref_screen, string)

<EditTextPreference
            android:icon="@drawable/ic_perm_device_information_black_24dp"
            android:inputType="number"
            android:key="change_device_id"
            android:maxLines="1"
            android:selectAllOnFocus="true"
            android:singleLine="true"
            android:summary="@string/settings_device_id"
            android:title="@string/pref_title_change_device_id" />
Run Code Online (Sandbox Code Playgroud)

它曾经显示数字键盘来更改值,但在迁移到 AndroidX 后,它继续显示普通键盘,如下图所示。我尝试更改 inputType 并在 xml 中定义小数,但无济于事。迁移到 AndroidX 后是否对键盘的 inputType 设置进行了更改,或者我是否遗漏了一些明显的内容?

android:inputType="numberDecimal"
android:digits="0123456789"
Run Code Online (Sandbox Code Playgroud)

编辑文本首选项键盘

android android-preferences edittextpreference androidx

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

java.lang.IllegalArgumentException:错误:无法解析APK文件:

我搜索stockoverflow和谷歌但没有运气。我最近将我的应用程序迁移到 androidx,经过大量努力,我能够修复所有构建失败的问题。但现在当应用程序安装在模拟器或设备上时,我收到以下错误。任何帮助将不胜感激。

我已尝试以下操作: 使缓存无效/重新启动清理构建并重建项目 从设备中卸载应用程序 重新启动我的电脑

Exception occurred while executing:
java.lang.IllegalArgumentException: Error: Failed to parse APK file: /data/local/tmp/...
    at com.android.server.pm.PackageManagerShellCommand.setParamsSize(PackageManagerShellCommand.java:338)
    at com.android.server.pm.PackageManagerShellCommand.runInstall(PackageManagerShellCommand.java:906)
    at com.android.server.pm.PackageManagerShellCommand.onCommand(PackageManagerShellCommand.java:158)
    at android.os.ShellCommand.exec(ShellCommand.java:103)
    at com.android.server.pm.PackageManagerService.onShellCommand(PackageManagerService.java:21328)
    at android.os.Binder.shellCommand(Binder.java:634)
    at android.os.Binder.onTransact(Binder.java:532)
    at android.content.pm.IPackageManager$Stub.onTransact(IPackageManager.java:2821)
    at com.android.server.pm.PackageManagerService.onTransact(PackageManagerService.java:3856)
    at android.os.Binder.execTransact(Binder.java:731)
Caused by: android.content.pm.PackageParser$PackageParserException: Failed to parse /data/local/tmp/...
    at android.content.pm.PackageParser.parseApkLiteInner(PackageParser.java:1590)
    at android.content.pm.PackageParser.parseApkLite(PackageParser.java:1575)
    at com.android.server.pm.PackageManagerShellCommand.setParamsSize(PackageManagerShellCommand.java:331)
    ... 9 more
$ adb shell pm uninstall ...
Unknown failure (at android.os.Binder.execTransact(Binder.java:731))
Error while Installing APK
Run Code Online (Sandbox Code Playgroud)

migration android apk androidx

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

ClassNotFoundException:在路径上找不到类“androidx.work.Worker”:DexPathList

当我使用WorkManager的PeriodicWorkRequest时,我一直在尝试制作一个android库。它作为主机开发应用程序中的模块完美运行。但是,一旦我将其导出为 aar 文件并在另一个应用程序中使用它,我会收到以下错误,

java.lang.NoClassDefFoundError: Failed resolution of: Landroidx/work/Worker;
.
.
.
Caused by: java.lang.ClassNotFoundException: Didn't find class "androidx.work.Worker" on path: DexPathList[[zip file "/data/app/com.example.testapp-0WusKIYjC1qsHRMASLjm1Q==/base.apk"],nativeLibraryDirectories=[/data/app/com.example.testapp-0WusKIYjC1qsHRMASLjm1Q==/lib/arm64, /system/lib64, /vendor/lib64]]
Run Code Online (Sandbox Code Playgroud)

知道我该如何解决这个问题吗?

android dex aar androidx

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

androidx.appcompat.appcompat.R 不存在

androidx.appcompat.appcompat.R does not exist 升级/重构到 AndroidX 后,我在代码中收到此错误, 它显示appcompat符号无法解析

android android-studio androidx

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

冗余覆盖方法

我无法覆盖片段的 onviewcreated 方法

这是我的代码

import androidx.lifecycle.ViewModelProviders
import android.os.Bundle
import androidx.fragment.app.Fragment
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup

import com.ab.R

class HomeFragment : Fragment() {

    companion object {
        fun newInstance() = HomeFragment()
    }

    private lateinit var viewModel: HomeViewModel

    override fun onCreateView(
        inflater: LayoutInflater, container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View? {
        return inflater.inflate(R.layout.home_fragment, container, false)
    }

    override fun onActivityCreated(savedInstanceState: Bundle?) {
        super.onActivityCreated(savedInstanceState)
        viewModel = ViewModelProviders.of(this).get(HomeViewModel::class.java)
        // TODO: Use the ViewModel
    }

    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)
    }
}
Run Code Online (Sandbox Code Playgroud)

冗余覆盖方法较少...检查信息:此检查报告可以省略的冗余覆盖修饰符

android android-fragments kotlin androidx

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

为什么使用 AndroidX 时嵌套的 PreferenceScreen 打不开?

我正在使用 AndroidX 的首选项库来管理我的应用程序的设置。我的SettingsFragment派生PreferenceFragmentCompat并加载以下布局:

<androidx.preference.PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">

    <androidx.preference.PreferenceScreen
        android:key="screen_backup_key"
        android:title="@string/local_database">

        <androidx.preference.Preference
            android:key="button_save_key"
            android:title="@string/export" />

        <androidx.preference.Preference
            android:key="button_load_key"
            android:title="@string/_import" />

    </androidx.preference.PreferenceScreen>

    <androidx.preference.Preference
            android:key="screen_about"
            android:title="@string/about" />

</androidx.preference.PreferenceScreen>
Run Code Online (Sandbox Code Playgroud)

布局显示正确,但是当我单击嵌套PreferenceScreen条目时没有任何反应。它以前可以与支持库PreferenceScreen中的一起使用,但现在已弃用。

我希望看到这个嵌套的内容PreferenceScreen。我究竟做错了什么?

android android-preferences kotlin preferencefragment androidx

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

AndroidX:设置 Enter 键以验证 EditTextPreference 对话框

我正在尝试使用AndroidX制作首选项屏幕,但遇到了一个小问题......

当我使用虚拟键盘上的“确定”按钮验证输入时,首选项未验证。(键盘被隐藏了,仅此而已......)

使用 AndroidX,我们无法再覆盖showDialog()...EditTextPreference并且我找不到另一种方法来访问该对话框以将其关闭。

总之,我希望:虚拟键盘上按钮的 DONE 操作验证 AlertDialog。

在此输入图像描述

这是我的示例代码:

XML文件

<PreferenceScreen xmlns:app="http://schemas.android.com/apk/res-auto">
    <EditTextPreference
        app:key="pref_1"
        app:title="Test"
        app:useSimpleSummaryProvider="true" /> 
</PreferenceScreen> 
Run Code Online (Sandbox Code Playgroud)

偏好活动

public class MySettingsActivity extends AppCompatActivity implements
        PreferenceFragmentCompat.OnPreferenceStartFragmentCallback {

    [...]

    public static class HeaderFragment extends PreferenceFragmentCompat {
        @Override
        public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
            setPreferencesFromResource(R.xml.header_preferences, rootKey);

            EditTextPreference pref1 = getPreferenceManager().findPreference("pref_1");
            pref1.setOnBindEditTextListener(new EditTextPreference.OnBindEditTextListener() {
                @Override
                public void onBindEditText(@NonNull EditText editText) {
                    editText.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS);
                    editText.setImeOptions(EditorInfo.IME_ACTION_DONE);
                }
            });
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

android edittextpreference imeoptions appcompatactivity androidx

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

膨胀类 androidx.core.widget.NestedScrollView 时出错

我正在使用 NestedScrollView,并且收到错误 Error inflating class androidx.core.widget.NestedScrollView。我也尝试了 android.support.v4.widget.NestedScrollView。但两者都不起作用并且出现错误。在嵌套滚动视图中,有线性布局,在线性布局中,有 1 个 imageview、1 个 textview 和 recycler view。我是否必须添加任何依赖项才能用于 NestedScrollView?请帮助解决这个问题。先感谢您。

\n\n
<?xml version="1.0" encoding="utf-8"?>\n<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"\n    xmlns:app="http://schemas.android.com/apk/res-auto"\n    xmlns:tools="http://schemas.android.com/tools"\n    android:layout_width="match_parent"\n    android:layout_height="match_parent"\n    tools:context=".AddFriend"\n    android:padding="10dp">\n    <androidx.core.widget.NestedScrollView\n    android:layout_width="match_parent"\n    android:layout_height="wrap_content"\n    android:nestedScrollingEnabled="false">\n        <LinearLayout\n            android:layout_width="match_parent"\n            android:layout_height="wrap_content"\n            android:orientation="vertical">\n\n            <ImageView\n                android:id="@+id/image"\n                android:layout_width="wrap_content"\n                android:layout_height="wrap_content"\n                android:src="@mipmap/ic_group"/>\n            <TextView\n                android:layout_width="match_parent"\n                android:layout_height="wrap_content"\n                android:text="Group Members"\n                android:textSize="30sp"\n                android:gravity="center"\n                />\n            <androidx.recyclerview.widget.RecyclerView\n            android:id="@+id/recycle_view"\n            android:layout_width="match_parent"\n            android:layout_height="wrap_content" />\n\n    </LinearLayout>\n</androidx.core.widget.NestedScrollView>\n    <ProgressBar\n        android:id="@+id/progress"\n        android:layout_width="wrap_content"\n        android:layout_height="wrap_content"\n        android:layout_centerInParent="true"\n        />\n</RelativeLayout>\n
Run Code Online (Sandbox Code Playgroud)\n\n
2020-04-19 11:07:08.404 32661-32661/com.example.chatapp10 E/AndroidRuntime: FATAL EXCEPTION: main\n    Process: com.example.chatapp10, PID: 32661\n    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.chatapp10/com.example.chatapp10.GroupMembersActivity}: android.view.InflateException: Binary …
Run Code Online (Sandbox Code Playgroud)

xml android scrollview nestedscrollview androidx

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

即使在 gradle 中添加依赖项后,“无法解析类 android.support.v4.widget.DrawerLayout”

Cannot resolve class android.support.v4.widget.DrawerLayout即使在我的 build.gradle 文件中添加了 DrawerLayoutandroidx.drawerlayout:drawerlayout:1.1.1和 Materialcom.google.android.material:material:1.0.0实现之后,我仍然收到错误。

我尝试添加其他实现,例如com.android.support:support-compat:28.0.0com.android.support:design:25.0.0,但错误仍然存​​在,并且应用程序无法启动。

知道如何解决这个问题吗?

构建.gradle:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 30
    buildToolsVersion "30.0.2"

    defaultConfig {
        applicationId "edu.ktu.birthdaycalendar"
        minSdkVersion 21
        targetSdkVersion 30
        versionCode 1
        versionName "1.0"

        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"

        javaCompileOptions {
            annotationProcessorOptions {
                arguments = ["room.schemaLocation": "$projectDir/schemas".toString()]
            }
        }
    }

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

}

dependencies {
    implementation fileTree(dir: "libs", include: ["*.jar"])
    implementation 'androidx.appcompat:appcompat:1.1.0'
    implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
    implementation 'org.jetbrains:annotations-java5:15.0'
    implementation …
Run Code Online (Sandbox Code Playgroud)

android android-support-library drawerlayout androidx

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

应用程序有时会在 androidx.appcompat.widget.ContentFrameLayout.setDecorPadding() 方法上崩溃

有时,我的应用程序打开时会发生崩溃:

Fatal Exception: java.lang.NullPointerException: Attempt to invoke virtual method 'void androidx.appcompat.widget.ContentFrameLayout.setDecorPadding(int, int, int, int)' on a null object reference
       at androidx.appcompat.app.AppCompatDelegateImpl.applyFixedSizeWindow(AppCompatDelegateImpl.java:1026)
       at androidx.appcompat.app.AppCompatDelegateImpl.ensureSubDecor(AppCompatDelegateImpl.java:820)
       at androidx.appcompat.app.AppCompatDelegateImpl.onPostCreate(AppCompatDelegateImpl.java:527)
       at androidx.appcompat.app.AppCompatActivity.onPostCreate(AppCompatActivity.java:127)
       at android.app.Instrumentation.callActivityOnPostCreate(Instrumentation.java:1381)
       at android.app.ActivityThread.handleStartActivity(ActivityThread.java:3499)
       at android.app.servertransaction.TransactionExecutor.performLifecycleSequence(TransactionExecutor.java:221)
       at android.app.servertransaction.TransactionExecutor.cycleToPath(TransactionExecutor.java:201)
       at android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:173)
       at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:97)
       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2147)
       at android.os.Handler.dispatchMessage(Handler.java:107)
       at android.os.Looper.loop(Looper.java:237)
       at android.app.ActivityThread.main(ActivityThread.java:7814)
       at java.lang.reflect.Method.invoke(Method.java)
       at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1075)
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,堆栈跟踪中没有引用我的代码中的某些内容,因此因此我无法找出问题所在。这次事故的原因可能是什么?

android androidx

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