编辑器$SuggestionsPopupWindow.initContentView()中的三星资源$NotFoundException

Dav*_*ser 6 android samsung-mobile

在运行 Android 7.0 的三星设备(J7 和 S7)上发生崩溃。

我已经构建了一个很小的测试应用程序并且可以重现崩溃。SingleActivity扩展Activity(不是AppCompatActivity),简单的布局,包含一个EditText带有inputType="text". 目标 SDK 为 8。

将光标定位在 中EditText并键入时,会建议单词并为单词加下划线。单击某些带下划线的单词或在 中完成编辑EditText,然后返回到EditText。输入一些数据并在 内部单击后EditText,应用程序将因以下堆栈跟踪而崩溃:

06-01 18:56:37.990 10339-10339/sharpmind.de.samsungtest W/ResourceType: No package identifier when getting value for resource number 0x00000000
06-01 18:56:37.991 10339-10339/sharpmind.de.samsungtest D/AndroidRuntime: Shutting down VM
06-01 18:56:37.992 10339-10339/sharpmind.de.samsungtest E/AndroidRuntime: FATAL EXCEPTION: main
Process: sharpmind.de.samsungtest, PID: 10339
android.content.res.Resources$NotFoundException: Resource ID #0x0
at android.content.res.ResourcesImpl.getValue(ResourcesImpl.java:202)
at android.content.res.Resources.loadXmlResourceParser(Resources.java:2970)
at android.content.res.Resources.getLayout(Resources.java:1986)
at android.view.LayoutInflater.inflate(LayoutInflater.java:425)
at android.view.LayoutInflater.inflate(LayoutInflater.java:378)
at android.widget.Editor$SuggestionsPopupWindow.initContentView(Editor.java:3704)
at android.widget.Editor$PinnedPopupWindow.<init>(Editor.java:3395)
at android.widget.Editor$SuggestionsPopupWindow.<init>(Editor.java:3683)
at android.widget.Editor.replace(Editor.java:432)
at android.widget.Editor$3.run(Editor.java:2359)
at android.os.Handler.handleCallback(Handler.java:751)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6776)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1496)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1386)
Run Code Online (Sandbox Code Playgroud)

目标 SDK 设置为 14,不会发生崩溃。

如果我禁用自动更正和单词建议(这在三星设备上并不容易),崩溃也不会发生。但这让我的用户真的很生气,所以这不是一个可行的解决方案。


活动:

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

    }
}
Run Code Online (Sandbox Code Playgroud)

布局:

<RelativeLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
    <EditText
            android:id="@+id/edittext"
            android:layout_width="match_parent"
            android:minHeight="200dp"
            android:inputType="text"
            android:layout_height="wrap_content"/>
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)