#android #android-layout #android-databinding
Вопрос:
В настоящее время я пытаюсь настроить макеты своего приложения для поддержки нескольких размеров экрана. Этот процесс требует большого тестирования с моей стороны, поэтому я постоянно удаляю/перемещаю/рефакторингу файлы макетов.
Однако на данный момент я не могу разрешить исключение, как написано в названии, потому что оно отображается каждый раз, когда я запускаю свое приложение. До этого исключения у меня была другая папка макета под названием layout-land, а затем я просто удалил эту папку и переместил ее содержимое в папку layout-sw600dp.
Я перепробовал несколько способов решения этой проблемы:
- Я удалил все дополнительные папки с макетом (- ами)w*
- Перезапустил Android Studio и аннулировал кэш
- Проект очищается/перестраивается несколько раз
Есть ли что-нибудь еще, что могло бы мне помочь?
Редактировать
java.lang.IllegalArgumentException: The tag for fragment_XXX is invalid. Received: layout-sw600dp/fragment_XXX_0 at com.example.myapp.DataBinderMapperImpl.getDataBinder(DataBinderMapperImpl.java:422) at androidx.databinding.MergedDataBinderMapper.getDataBinder(MergedDataBinderMapper.java:79) at androidx.databinding.DataBindingUtil.bind(DataBindingUtil.java:199) at androidx.databinding.DataBindingUtil.inflate(DataBindingUtil.java:130) at androidx.databinding.ViewDataBinding.inflateInternal(ViewDataBinding.java:1409) at com.example.myapp.databinding.FragmentXXXBinding.inflate(FragmentLoginBinding.java:146) at com.example.myapp.databinding.FragmentXXXBinding.inflate(FragmentLoginBinding.java:132) at com.example.myapp.XXXFragment.onCreateView(LoginFragment.java:74) at androidx.fragment.app.Fragment.performCreateView(Fragment.java:2963) at androidx.fragment.app.FragmentStateManager.createView(FragmentStateManager.java:518) at androidx.fragment.app.FragmentStateManager.moveToExpectedState(FragmentStateManager.java:282) at androidx.fragment.app.FragmentManager.executeOpsTogether(FragmentManager.java:2189) at androidx.fragment.app.FragmentManager.removeRedundantOperationsAndExecute(FragmentManager.java:2106) at androidx.fragment.app.FragmentManager.execPendingActions(FragmentManager.java:2002) at androidx.fragment.app.FragmentManager$5.run(FragmentManager.java:524) at android.os.Handler.handleCallback(Handler.java:938) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:246) at android.app.ActivityThread.main(ActivityThread.java:8506) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:602) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1130)
Комментарии:
1. Опубликуйте трассировку стека. Это может быть полезно. Кроме того, почему вы удаляете/перемещаете/рефакторингуете файлы макетов для тестирования нескольких файлов макетов?
2. Опубликовал дорожку стека, см. ниже «ПРАВКА» в главном посте. Я делаю это, потому что мне может понадобиться, чтобы некоторые макеты поддерживались на меньших или больших экранах. Так что есть случай, когда первоначально я бы создал макет для экранов с меньшей шириной 600dp, а затем я решил использовать этот макет на еще меньших экранах, чем 600dp.
3. Ошибка связана с привязкой данных, и похоже, что вы делаете все правильно в отношении того, как оправиться от ошибки. По моему опыту, привязка данных иногда может переходить в странное состояние. Иногда перезагрузка компьютера решала проблемы с привязкой данных, но я не могу сказать, почему. Вы можете попробовать аннулировать кэш, закрыть AS, а затем вручную удалить все файлы сборки напрямую, а также удалить файл .idea в корневом каталоге вашего проекта перед перезапуском AS.
4. Во-первых, большое спасибо за ваши ответы @Cheticamp! Во-вторых, я все еще не в состоянии найти решение своей проблемы. Я также сделал я то, что прочитал в этой статье!
5. Если вы все это сделали, то проблема, вероятно, в вашем коде. Я бы покопался там в следующий раз. Возможно, установите точку останова в коде, вызывающем исключение, чтобы получить представление о том, что происходит.