Я хочу создать пользовательское представление на основе 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
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Как решить отсутствующий вид изображения на Chrome с помощью кода VS?
Anonymous » » в форуме Javascript - 0 Ответы
- 8 Просмотры
-
Последнее сообщение Anonymous
-