使用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)
我搜索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) 当我使用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)
知道我该如何解决这个问题吗?
androidx.appcompat.appcompat.R does not exist
升级/重构到 AndroidX 后,我在代码中收到此错误,
它显示appcompat符号无法解析
我无法覆盖片段的 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)
冗余覆盖方法较少...检查信息:此检查报告可以省略的冗余覆盖修饰符
我正在使用 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
我正在尝试使用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
我正在使用 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>\nRun Code Online (Sandbox Code Playgroud)\n\n2020-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) 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.0和com.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) 有时,我的应用程序打开时会发生崩溃:
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 ×10
androidx ×10
kotlin ×2
aar ×1
apk ×1
dex ×1
drawerlayout ×1
imeoptions ×1
migration ×1
scrollview ×1
xml ×1