ActivityResultLauncher<Intent> launcherImportFileSelection = requireActivity().registerForActivityResult(...
Run Code Online (Sandbox Code Playgroud)
如果上面的代码放在onCreate(Bundle savingInstanceState)中,会抛出以下异常:
Exception: LifecycleOwner MyActivity@868498a is attempting to register while current state is RESUMED. LifecycleOwners must call register before they are STARTED.
Run Code Online (Sandbox Code Playgroud)
如果将其放置在构造函数中或作为声明,则 requireActivity() 会抛出以下异常:
java.lang.reflect.InvocationTargetException
at java.lang.reflect.Constructor.newInstance0(Native Method)
at java.lang.reflect.Constructor.newInstance(Constructor.java:343)
2021-04-17 15:15:41.948 27930-27930/net.biyee.onvifer E/AndroidRuntime: at androidx.fragment.app.Fragment.instantiate(Fragment.java:613)
... 42 more
Caused by: java.lang.IllegalStateException: Fragment MyFragment{fba6d22} (e0d1f006-996d-4051-9839-4575a92e33dd) not attached to an activity.
at androidx.fragment.app.Fragment.requireActivity(Fragment.java:928)
Run Code Online (Sandbox Code Playgroud)
我在 build.gradle 中有以下内容:
implementation 'androidx.fragment:fragment:1.3.2'
Run Code Online (Sandbox Code Playgroud)
有人可以提供这方面的建议吗?
更新:
问题已经解决了。请参阅我与@CommmonsWare 的交流。
我刚刚将 Android Studio 从 Arctic Fox 升级到 Bumblebee,并将 AGP 从 7.0.4 升级到 7.1.0

由gradle任务assembleOfficialRelease为flavor“official”生成的apk多年来一直位于以下目录中:
..app/build/outputs/apk/official/release/app-official-release.apk
Run Code Online (Sandbox Code Playgroud)
我认为新的 AGP 已将位置更改为:
..app/build/intermediates/apk/official/release/app-official-release.apk
Run Code Online (Sandbox Code Playgroud)
我试图找出 AGP 对 apk 还做了什么,但在发行说明中找不到任何内容。
不知道有没有有识之士能告诉我,在我向用户发布之前,新的 AGP 对这个 apk 做了什么改变。
更新(2022-05-09)
Android Studio Chipmunk 已将 apk 文件放回到文件夹 ..app/build/outputs/apk/official/release/ 中,没有任何通知。在我意识到这一点之前,它再次杀死了我很多时间。
android-studio android-gradle-plugin android-studio-bumblebee
例如,如果添加或删除了一些首选项条目,那么当使用新的首选项结构更新应用程序时,Android如何处理现有的首选项数据?
我很抱歉这个基本问题,但我勤奋的搜索和阅读找不到答案.
单击超链接时,我有以下代码来更改光标
$('a').click(function () {
$('*').css("cursor", "progress");
});
Run Code Online (Sandbox Code Playgroud)
单击链接时,光标将完全按预期更改为"progress"(即等待光标).但是,问题是加载新页面后光标仍保持"进度".仅在鼠标移动后才会更改为默认值.这与另一个问题有关.其他人表达了同样的问题.
如标题所述,我希望在加载页面时将光标更改为默认值.
要在应用程序项目的strings.xml(在res\values中)引用字符串foo,可以简单地使用
getString(R.string.foo)
Run Code Online (Sandbox Code Playgroud)
getString是Context的一种方法.
假设Android库的strings.xml中有一个字符串foo.如何在图书馆的方法中使用它?
编辑:有人建议将Context的引用传递给库方法,以便可以使用getString().由于它是应用程序项目的上下文,因此存在潜在的冲突,可以说明如下:
假设:库有一个字符串foo,其值为"library foo".一个app项目有一个字符串foo,其值为"app foo"
以下代码
Log.d("Debug", "App foo ID: " + R.string.foo);
Log.d("Debug", "App: foo value: " + getString(R.string.foo));
Run Code Online (Sandbox Code Playgroud)
产生:
03-22 05:53:55.590: D/Debug(16719): App foo ID: 2131230723
03-22 05:53:55.590: D/Debug(16719): App foo value: app foo
Run Code Online (Sandbox Code Playgroud)
在库方法中,以下代码
Log.d("Debug", "Library foo ID: " + R.string.foo);
Log.d("Debug", "Library foo value: " + context.getString(com.my.library.R.string.foo));
Run Code Online (Sandbox Code Playgroud)
产生:
03-22 05:55:03.680: D/Debug(16719): Library foo ID: 2131230723
03-22 05:55:03.680: D/Debug(16719): Library foo value: app foo
Run Code Online (Sandbox Code Playgroud)
以上显示ID冲突因此错误的字符串值.
我已经多次尝试过ProGuard,并且在过去一年左右的时间里花了很多时间配置它无济于事.它似乎有一些与预编译的第三方库相关的固有限制,如其文档中所述.ProGuard文档很好地提供了一长串备选方案.我不是一个一个地尝试它们,而是在这里看看是否有任何人可以与其中一些人分享成功经验.我只需要一些东西来混淆java代码.代码收缩和优化是很好的,但不是必需的.
我之前通过拖放在Visual Studio Emulator for Android上安装了一个软件包.我昨天得到了一个新的更新.模拟器似乎不再支持拖放.谁能对此有所了解?
偶尔(很少)报告以下崩溃,并且仅从Android 7.0设备报告:
android.util.AndroidRuntimeException:
at android.webkit.WebViewFactory.getProviderClass (WebViewFactory.java:371)
at android.webkit.WebViewFactory.getProvider (WebViewFactory.java:194)
at android.webkit.WebViewDatabase.getInstance (WebViewDatabase.java:38)
at com.amazon.device.ads.AdLayout.isWebViewDatabaseNull (SourceFile:352)
at com.amazon.device.ads.AdLayout.initializeIfNecessary (SourceFile:260)
at com.amazon.device.ads.AdLayout.getAdController (SourceFile:303)
at com.amazon.device.ads.AdLayout.onLayout (SourceFile:478)
at android.view.View.layout (View.java:17838)
at android.view.ViewGroup.layout (ViewGroup.java:5754)
at android.widget.RelativeLayout.onLayout (RelativeLayout.java:1189)
at android.view.View.layout (View.java:17838)
at android.view.ViewGroup.layout (ViewGroup.java:5754)
at android.widget.RelativeLayout.onLayout (RelativeLayout.java:1189)
at android.view.View.layout (View.java:17838)
at android.view.ViewGroup.layout (ViewGroup.java:5754)
at android.widget.LinearLayout.setChildFrame (LinearLayout.java:1982)
at android.widget.LinearLayout.layoutVertical (LinearLayout.java:1826)
at android.widget.LinearLayout.onLayout (LinearLayout.java:1735)
at android.view.View.layout (View.java:17838)
at android.view.ViewGroup.layout (ViewGroup.java:5754)
at android.widget.FrameLayout.layoutChildren (FrameLayout.java:383)
at android.widget.FrameLayout.onLayout (FrameLayout.java:321)
at android.view.View.layout (View.java:17838)
at android.view.ViewGroup.layout (ViewGroup.java:5754)
at android.widget.FrameLayout.layoutChildren (FrameLayout.java:383) …Run Code Online (Sandbox Code Playgroud) 我有很多帖子和 Google 文档,但我仍然不清楚如何判断应用内购买已退款。我小心红了In-App Billing v3 - 不检测退款,Google Play In-App Billing Version 3 支持退款吗?.
我相信我在不久前通过复制和粘贴从 Google 官方文档中记下了以下笔记:
purchaseState:订单的购买状态。可能的值为 0(已购买)、1(已取消)或 2(已退款)。
现在,官方文档有以下内容:
-> purchaseState:订单的购买状态。它总是返回 0-
(购买)。
更具体地说,如果 IAB 购买被退款或取消,那是否仍在 mHelper.queryInventoryAsync(mGotInventoryListener) 获取的用户库存中?如果是这样,如何判断购买已被取消或退款?
更新 [2019-12-12]:
我已经测试了很多次并确认了以下几点:
如果订单在退款后被取消,它将从getPurchasesList返回的结果中消失。发生这种情况所需的时间各不相同。可能是几分钟到 10 多个小时。我认为这取决于 Google Play 何时刷新其缓存。似乎可以打开 Google Play 来刷新其缓存。在一种情况下,getPurchasesList在退款 10 多个小时后仍然返回了已退款的购买,但在 Google Play 一打开它就停止了退货。
自动生成的 proguard-rules.pro 具有以下内容:
# Uncomment this to preserve the line number information for
# debugging stack traces.
#-keepattributes SourceFile,LineNumberTable
Run Code Online (Sandbox Code Playgroud)
多年来,我一直对此进行评论,直到 Android Studio 3.4默认使用R8而不是 ProGuard ,它才能完美运行。
让我们使用以下示例:
java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.lang.Boolean.booleanValue()' on a null object reference
at net.foo.anroid.Foo.wb.d(SourceFile:453)
at net.foo.anroid.Foo.wb.a(SourceFile:213)
at net.foo.anroid.Foo.wb.n(SourceFile:103)
at net.foo.anroid.Foo.qa.run(Unknown Source:2)
at java.lang.Thread.run(Thread.java:764)
Run Code Online (Sandbox Code Playgroud)
当使用 ProGuard 时,行号(例如 453、213...)曾经是 Java 代码源文件中的实际行号,但它们不再是 R8。即使使用官方推荐的反混淆工具ReTrace也无法恢复原始行号。
“-keepattributes SourceFile,LineNumberTable”究竟是做什么的?
android ×7
androidx ×1
crash ×1
css ×1
cursor ×1
google-play ×1
java ×1
jquery ×1
obfuscation ×1
preferences ×1
proguard ×1
updates ×1