Я хочу создать пользовательское представление на основе com.google.android.material.slider.rangeslider . Он работает на физическом устройстве, но не работает в предварительном просмотре XML от Android Studio. Я пытался восстановить, очистить кэш и перезагрузить IDE. .png " /> < /p>
Исключение < /h3>
java.lang.NullPointerException: Missing required view with ID: com.example.appname:id/sliding_pane_detail_container
at com.example.appname.databinding.ViewRangeSliderBinding.bind(ViewRangeSliderBinding.java:78)
at com.example.appname.databinding.ViewRangeSliderBinding.inflate(ViewRangeSliderBinding.java:54)
at com.example.appname.core.view.RangeSliderView.(RangeSliderView.kt:20)
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499)
at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:480)
at com.android.tools.rendering.ViewLoader.createNewInstance(ViewLoader.java:293)
at com.android.tools.rendering.ViewLoader.loadClass(ViewLoader.java:156)
at com.android.tools.rendering.ViewLoader.loadView(ViewLoader.java:117)
at com.android.tools.rendering.LayoutlibCallbackImpl.loadView(LayoutlibCallbackImpl.java:281)
at android.view.BridgeInflater.loadCustomView(BridgeInflater.java:429)
at android.view.BridgeInflater.loadCustomView(BridgeInflater.java:440)
at android.view.BridgeInflater.createViewFromTag(BridgeInflater.java:344)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:973)
at android.view.LayoutInflater.rInflate_Original(LayoutInflater.java:1135)
at android.view.LayoutInflater_Delegate.rInflate(LayoutInflater_Delegate.java:72)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:1109)
at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:1096)
at android.view.LayoutInflater.rInflate_Original(LayoutInflater.java:1138)
at android.view.LayoutInflater_Delegate.rInflate(LayoutInflater_Delegate.java:72)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:1109)
at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:1096)
at android.view.LayoutInflater.rInflate_Original(LayoutInflater.java:1138)
at android.view.LayoutInflater_Delegate.rInflate(LayoutInflater_Delegate.java:72)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:1109)
at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:1096)
at android.view.LayoutInflater.inflate(LayoutInflater.java:694)
at android.view.LayoutInflater.inflate(LayoutInflater.java:505)
at com.android.layoutlib.bridge.impl.RenderSessionImpl.inflate(RenderSessionImpl.java:365)
at com.android.layoutlib.bridge.Bridge.createSession(Bridge.java:454)
at com.android.tools.idea.layoutlib.LayoutLibrary.createSession(LayoutLibrary.java:120)
at com.android.tools.rendering.RenderTask.createRenderSession(RenderTask.java:784)
at com.android.tools.rendering.RenderTask.lambda$inflate$6(RenderTask.java:934)
at com.android.tools.rendering.RenderExecutor$runAsyncActionWithTimeout$3.run(RenderExecutor.kt:202)
at com.android.tools.rendering.RenderExecutor$PriorityRunnable.run(RenderExecutor.kt:316)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
at java.base/java.lang.Thread.run(Thread.java:840)
< /code>
code < /h3>
< /code>
< /code>
class RangeSliderView(context: Context, attrs: AttributeSet) : LinearLayout(context, attrs) {
private val binging: ViewRangeSliderBinding
private val isDiscrete: Boolean
val rangeValue get() = with(binging.slider.values) { listOf(this[0], this[1]) }
init {
val inflater = LayoutInflater.from(context)
binging = ViewRangeSliderBinding.inflate(inflater, this, true)
with(binging) {
context.theme.obtainStyledAttributes(attrs, R.styleable.RangeSliderView, 0, 0).apply {
try {
titleTextView.text = getString(R.styleable.RangeSliderView_title)
with (slider) {
stepSize = getFloat(R.styleable.RangeSliderView_stepSize, 0.0F)
isDiscrete = stepSize % 1 == 0F
valueFrom = getFloat(R.styleable.RangeSliderView_valueFrom, 0.0F)
valueTo = getFloat(R.styleable.RangeSliderView_valueTo, 100.0F)
labelBehavior = getInt(R.styleable.RangeSliderView_labelBehavior, 0)
if (hasValue(com.google.android.material.R.styleable.RangeSlider_values)) {
val valuesId: Int = getResourceId(R.styleable.RangeSliderView_values, 0)
val values: TypedArray = getResources().obtainTypedArray(valuesId)
this.values = convertToFloat(values)
}
}
} finally {
recycle()
}
}
}
}
fun setValues(values: List) {
binging.slider.values = values
}
private fun convertToFloat(values: TypedArray): List {
val ret: MutableList = ArrayList()
for (i in 0 until values.length()) {
ret.add(values.getFloat(i, -1.0f))
}
return ret
}
}
Подробнее здесь: https://stackoverflow.com/questions/793 ... ustom-view
Как исправить отсутствующий необходимый вид с идентификатором в пользовательском представлении ⇐ Android
Форум для тех, кто программирует под Android
1738153291
Anonymous
Я хочу создать пользовательское представление на основе com.google.android.material.slider.rangeslider . Он работает на физическом устройстве, но не работает в предварительном просмотре XML от Android Studio. Я пытался восстановить, очистить кэш и перезагрузить IDE. .png " /> < /p>
Исключение < /h3>
java.lang.NullPointerException: Missing required view with ID: com.example.appname:id/sliding_pane_detail_container
at com.example.appname.databinding.ViewRangeSliderBinding.bind(ViewRangeSliderBinding.java:78)
at com.example.appname.databinding.ViewRangeSliderBinding.inflate(ViewRangeSliderBinding.java:54)
at com.example.appname.core.view.RangeSliderView.(RangeSliderView.kt:20)
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499)
at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:480)
at com.android.tools.rendering.ViewLoader.createNewInstance(ViewLoader.java:293)
at com.android.tools.rendering.ViewLoader.loadClass(ViewLoader.java:156)
at com.android.tools.rendering.ViewLoader.loadView(ViewLoader.java:117)
at com.android.tools.rendering.LayoutlibCallbackImpl.loadView(LayoutlibCallbackImpl.java:281)
at android.view.BridgeInflater.loadCustomView(BridgeInflater.java:429)
at android.view.BridgeInflater.loadCustomView(BridgeInflater.java:440)
at android.view.BridgeInflater.createViewFromTag(BridgeInflater.java:344)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:973)
at android.view.LayoutInflater.rInflate_Original(LayoutInflater.java:1135)
at android.view.LayoutInflater_Delegate.rInflate(LayoutInflater_Delegate.java:72)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:1109)
at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:1096)
at android.view.LayoutInflater.rInflate_Original(LayoutInflater.java:1138)
at android.view.LayoutInflater_Delegate.rInflate(LayoutInflater_Delegate.java:72)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:1109)
at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:1096)
at android.view.LayoutInflater.rInflate_Original(LayoutInflater.java:1138)
at android.view.LayoutInflater_Delegate.rInflate(LayoutInflater_Delegate.java:72)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:1109)
at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:1096)
at android.view.LayoutInflater.inflate(LayoutInflater.java:694)
at android.view.LayoutInflater.inflate(LayoutInflater.java:505)
at com.android.layoutlib.bridge.impl.RenderSessionImpl.inflate(RenderSessionImpl.java:365)
at com.android.layoutlib.bridge.Bridge.createSession(Bridge.java:454)
at com.android.tools.idea.layoutlib.LayoutLibrary.createSession(LayoutLibrary.java:120)
at com.android.tools.rendering.RenderTask.createRenderSession(RenderTask.java:784)
at com.android.tools.rendering.RenderTask.lambda$inflate$6(RenderTask.java:934)
at com.android.tools.rendering.RenderExecutor$runAsyncActionWithTimeout$3.run(RenderExecutor.kt:202)
at com.android.tools.rendering.RenderExecutor$PriorityRunnable.run(RenderExecutor.kt:316)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
at java.base/java.lang.Thread.run(Thread.java:840)
< /code>
code < /h3>
< /code>
< /code>
class RangeSliderView(context: Context, attrs: AttributeSet) : LinearLayout(context, attrs) {
private val binging: ViewRangeSliderBinding
private val isDiscrete: Boolean
val rangeValue get() = with(binging.slider.values) { listOf(this[0], this[1]) }
init {
val inflater = LayoutInflater.from(context)
binging = ViewRangeSliderBinding.inflate(inflater, this, true)
with(binging) {
context.theme.obtainStyledAttributes(attrs, R.styleable.RangeSliderView, 0, 0).apply {
try {
titleTextView.text = getString(R.styleable.RangeSliderView_title)
with (slider) {
stepSize = getFloat(R.styleable.RangeSliderView_stepSize, 0.0F)
isDiscrete = stepSize % 1 == 0F
valueFrom = getFloat(R.styleable.RangeSliderView_valueFrom, 0.0F)
valueTo = getFloat(R.styleable.RangeSliderView_valueTo, 100.0F)
labelBehavior = getInt(R.styleable.RangeSliderView_labelBehavior, 0)
if (hasValue(com.google.android.material.R.styleable.RangeSlider_values)) {
val valuesId: Int = getResourceId(R.styleable.RangeSliderView_values, 0)
val values: TypedArray = getResources().obtainTypedArray(valuesId)
this.values = convertToFloat(values)
}
}
} finally {
recycle()
}
}
}
}
fun setValues(values: List) {
binging.slider.values = values
}
private fun convertToFloat(values: TypedArray): List {
val ret: MutableList = ArrayList()
for (i in 0 until values.length()) {
ret.add(values.getFloat(i, -1.0f))
}
return ret
}
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79395007/how-to-fix-the-missing-required-view-with-id-in-the-custom-view[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия