2017-01-01 1 views
0

Я только что обновил свое приложение до уровня API 25, пытаясь получить WebView, отображаемый datetime-local, чтобы использовать правильный подборщик. Но теперь, как только я нажимаю на элементе в WebView моих падений приложения, со следующими сообщениями в LogCat:Неизвестный пакет при получении значения для номера ресурса 0x020a0057

01-01 16:17:22.578 10219-10219/com.example.test548 W/ResourceType: No known package when getting value for resource number 0x020a0057 
01-01 16:17:22.578 10219-10219/com.example.test548 W/System.err: android.content.res.Resources$NotFoundException: String resource ID #0x20a0057 
01-01 16:17:22.578 10219-10219/com.example.test548 W/System.err:  at android.content.res.Resources.getText(Resources.java:335) 
01-01 16:17:22.578 10219-10219/com.example.test548 W/System.err:  at android.content.Context.getText(Context.java:463) 
01-01 16:17:22.578 10219-10219/com.example.test548 W/System.err:  at org.chromium.ui.picker.DateTimePickerDialog.<init>(DateTimePickerDialog.java:78) 
01-01 16:17:22.578 10219-10219/com.example.test548 W/System.err:  at org.chromium.ui.picker.InputDialogContainer.showPickerDialog(InputDialogContainer.java:221) 
01-01 16:17:22.578 10219-10219/com.example.test548 W/System.err:  at org.chromium.ui.picker.InputDialogContainer.showPickerDialog(InputDialogContainer.java:102) 
01-01 16:17:22.579 10219-10219/com.example.test548 W/System.err:  at org.chromium.content.browser.input.DateTimeChooserAndroid.createDateTimeChooser(DateTimeChooserAndroid.java:1188) 
01-01 16:17:22.579 10219-10219/com.example.test548 W/System.err:  at org.chromium.base.SystemMessageHandler.nativeDoRunLoopOnce(Native Method) 
01-01 16:17:22.579 10219-10219/com.example.test548 W/System.err:  at org.chromium.base.SystemMessageHandler.handleMessage(SystemMessageHandler.java:41) 
01-01 16:17:22.579 10219-10219/com.example.test548 W/System.err:  at android.os.Handler.dispatchMessage(Handler.java:102) 
01-01 16:17:22.579 10219-10219/com.example.test548 W/System.err:  at android.os.Looper.loop(Looper.java:154) 
01-01 16:17:22.579 10219-10219/com.example.test548 W/System.err:  at android.app.ActivityThread.main(ActivityThread.java:6119) 
01-01 16:17:22.579 10219-10219/com.example.test548 W/System.err:  at java.lang.reflect.Method.invoke(Native Method) 
01-01 16:17:22.579 10219-10219/com.example.test548 W/System.err:  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886) 
01-01 16:17:22.579 10219-10219/com.example.test548 W/System.err:  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776) 
01-01 16:17:22.581 10219-10219/com.example.test548 A/chromium: [FATAL:jni_android.cc(236)] Please include Java exception stack in crash report 
01-01 16:17:22.695 10219-10219/com.example.test548 W/google-breakpad: ### ### ### ### ### ### ### ### ### ### ### ### ### 
01-01 16:17:22.695 10219-10219/com.example.test548 W/google-breakpad: Chrome build fingerprint: 
01-01 16:17:22.695 10219-10219/com.example.test548 W/google-breakpad: 1.0.19 
01-01 16:17:22.695 10219-10219/com.example.test548 W/google-breakpad: 20 
01-01 16:17:22.695 10219-10219/com.example.test548 W/google-breakpad: ### ### ### ### ### ### ### ### ### ### ### ### ### 
01-01 16:17:22.695 10219-10219/com.example.test548 A/libc: Fatal signal 6 (SIGABRT), code -6 in tid 10219 (le.test548) 

Ни один из пакетов в стеке вызовов не мой код. Что я делаю не так?

Как установить строковый ресурс «0x20a0057», чтобы авария не произошла?

ответ

0

Проблема заключается в том, что вы пытаетесь получить доступ к полю в представлении, что не указано/определено

Например, если у Вас есть мнение и попытаться получить доступ к

<!-- has an Id --> 
<Button 
    android:id="@+id/button1" 
    android:layout_width="50dp" 
    android:layout_height="50dp" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentBottom="true" /> 

<!-- does not have an Id --> 
<Button 
    android:layout_width="50dp" 
    android:layout_height="50dp" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentBottom="true" /> 

Doing следующая

String verboseViewName = ctivity.getResources().getResourceEntryName(v.getId()); // where v refers to the first button 

даст "Button1" в качестве нового значения для verboseViewName

Однако, выполнив следующие действия

String verboseViewName = activity.getResources().getResourceEntryName(v.getId()); // where v refers to the second button 

даст NotFoundException

Я получил это время перебора все виды из ViewGroup и печать их подробные (DEV определенная) ID, и получил эта ошибка при достижении одной и той же кнопки подробного id-less.

мне удалось создать свой собственный метод, который позволяет мне возвращать многословный ID:

public static String getVerboseViewId(Activity activity, View v) { 
    String result = "undefined"; 
    if (activity != null && v != null) { 
     try { 
      result = activity.getResources().getResourceEntryName(v.getId()); 
     } catch (Resources.NotFoundException e) { 
      //e.printStackTrace(); just ignore 
     } 
    } 
    return result; 
}