Skip to content
This repository was archived by the owner on Jul 16, 2025. It is now read-only.
This repository was archived by the owner on Jul 16, 2025. It is now read-only.

App crashes when I want to set error after rotating layout from fragment #145

Description

@fabrizziocht

Hello, I'm using Viewmodel to get the errorstate after rotating the device but app crashes, it occurs only with this material spinner, using Edittext there is no problem. Here the error:

E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.jgm90.neumaticos, PID: 15814
    java.lang.IllegalArgumentException: Layout: -126 < 0
        at android.text.Layout.<init>(Layout.java:250)
        at android.text.StaticLayout.<init>(StaticLayout.java:509)
        at android.text.StaticLayout.<init>(StaticLayout.java:493)
        at android.text.StaticLayout.<init>(StaticLayout.java:479)
        at android.text.StaticLayout.<init>(StaticLayout.java:466)
        at fr.ganfra.materialspinner.MaterialSpinner.prepareBottomPadding(MaterialSpinner.java:380)
        at fr.ganfra.materialspinner.MaterialSpinner.setError(MaterialSpinner.java:760)
        at com.jgm90.neumaticos.ui.Main.Control.ControlInfoBasicaFragment$initView$6.onChanged(ControlInfoBasicaFragment.kt:62)
        at com.jgm90.neumaticos.ui.Main.Control.ControlInfoBasicaFragment$initView$6.onChanged(ControlInfoBasicaFragment.kt:23)
        at androidx.lifecycle.LiveData.considerNotify(LiveData.java:113)
        at androidx.lifecycle.LiveData.dispatchingValue(LiveData.java:126)
        at androidx.lifecycle.LiveData$ObserverWrapper.activeStateChanged(LiveData.java:424)
        at androidx.lifecycle.LiveData$LifecycleBoundObserver.onStateChanged(LiveData.java:376)
        at androidx.lifecycle.LifecycleRegistry$ObserverWithState.dispatchEvent(LifecycleRegistry.java:355)
        at androidx.lifecycle.LifecycleRegistry.forwardPass(LifecycleRegistry.java:293)
        at androidx.lifecycle.LifecycleRegistry.sync(LifecycleRegistry.java:333)
        at androidx.lifecycle.LifecycleRegistry.moveToState(LifecycleRegistry.java:138)
        at androidx.lifecycle.LifecycleRegistry.handleLifecycleEvent(LifecycleRegistry.java:124)
        at androidx.fragment.app.Fragment.performStart(Fragment.java:2486)
        at androidx.fragment.app.FragmentManagerImpl.moveToState(FragmentManagerImpl.java:919)
        at androidx.fragment.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManagerImpl.java:1229)
        at androidx.fragment.app.FragmentManagerImpl.moveToState(FragmentManagerImpl.java:1295)
        at androidx.fragment.app.FragmentManagerImpl.dispatchStateChange(FragmentManagerImpl.java:2605)
        at androidx.fragment.app.FragmentManagerImpl.dispatchStart(FragmentManagerImpl.java:2571)
        at androidx.fragment.app.Fragment.performStart(Fragment.java:2484)
        at androidx.fragment.app.FragmentManagerImpl.moveToState(FragmentManagerImpl.java:919)
        at androidx.fragment.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManagerImpl.java:1229)
        at androidx.fragment.app.FragmentManagerImpl.moveToState(FragmentManagerImpl.java:1295)
        at androidx.fragment.app.FragmentManagerImpl.dispatchStateChange(FragmentManagerImpl.java:2605)
        at androidx.fragment.app.FragmentManagerImpl.dispatchStart(FragmentManagerImpl.java:2571)
        at androidx.fragment.app.FragmentController.dispatchStart(FragmentController.java:256)
        at androidx.fragment.app.FragmentActivity.onStart(FragmentActivity.java:533)
        at androidx.appcompat.app.AppCompatActivity.onStart(AppCompatActivity.java:179)
        at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1391)
        at android.app.Activity.performStart(Activity.java:7157)
        at android.app.ActivityThread.handleStartActivity(ActivityThread.java:2937)
        at android.app.servertransaction.TransactionExecutor.performLifecycleSequence(TransactionExecutor.java:180)
        at android.app.servertransaction.TransactionExecutor.cycleToPath(TransactionExecutor.java:165)
        at android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:142)
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:70)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1808)
        at android.os.Handler.dispatchMessage(Handler.java:106)
        at android.os.Looper.loop(Looper.java:193)
        at android.app.ActivityThread.main(ActivityThread.java:6669)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)

It only happens when I'm trying to set the error message again after rotating with this line:

override fun onActivityCreated(savedInstanceState: Bundle?) {
        super.onActivityCreated(savedInstanceState)
        initView()
    }
    private fun initView() {
        vehiculosAdapter = ArrayAdapter(context, R.layout.spinner_item, ArrayList<Vehiculo>()).apply { setDropDownViewResource(R.layout.spinner_dropdown_item) }
        tiposControlAdapter = ArrayAdapter(context, R.layout.spinner_item, ArrayList<Tipo>()).apply { setDropDownViewResource(R.layout.spinner_dropdown_item) }

        sp_vehiculo.apply { adapter = vehiculosAdapter }.onItemSelectedListener = this
        sp_tipocontrol.apply { adapter = tiposControlAdapter }.onItemSelectedListener = this
         // vm is a viewmodel restoring the data
        vehiculosAdapter.apply { clear() }.addAll(vm.getVehiculos())
        sp_vehiculo.setSelection(vehiculosAdapter.getPosition(vm.vehiculo.value) + 1)
        vm.errorVehiculo.observe(this, Observer {
            sp_vehiculo.error = it <- HERE CRASHES
        })

        tiposControlAdapter.apply { clear() }.addAll(vm.getTiposControl())
        sp_tipocontrol.setSelection(tiposControlAdapter.getPosition(vm.tipoControl.value) + 1)
        vm.errorTipo.observe(this, Observer {
            sp_tipocontrol.error = it <- HERE CRASHES TOO
        })
        }
    }```

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions