Как установить высоту переключателя динамически из фрагмента (не активность). Я попытался установить высоту more_button.layoutParams.height = less_height
, она хорошо работает в Activity, но во Фрагменте выбрасывает IllegalStateException
. Пожалуйста, смотрите прикрепленный журнал. Ниже фрагмент_tap_gesture. xml
<RadioGroup
android:id="@+id/tap_gesture_options"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginEnd="40dp"
android:layout_marginStart="40dp"
android:layout_marginTop="32dp"
android:gravity="center"
android:orientation="horizontal"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/tap_sensitivity_message">
<RadioButton
android:id="@+id/less_button"
android:layout_width="0dp"
android:layout_height="45dp"
android:layout_weight="1"
android:background="@drawable/rb_tinnitus_select_background"
android:button="@android:color/transparent"
android:checked="true"
android:gravity="center"
android:padding="8dp"
android:text="@string/less"
android:textColor="@drawable/rb_tinnitus_select_text"
android:textSize="18sp" />
<RadioButton
android:id="@+id/default_button"
android:layout_width="0dp"
android:layout_height="60dp"
android:layout_weight="1"
android:background="@drawable/rb_tinnitus_select_background"
android:button="@android:color/transparent"
android:checked="true"
android:gravity="center"
android:padding="8dp"
android:text="@string/default_choice"
android:textColor="@drawable/rb_tinnitus_select_text"
android:textSize="18sp" />
<RadioButton
android:id="@+id/more_button"
android:layout_width="0dp"
android:layout_height="90dp"
android:layout_weight="1"
android:background="@drawable/rb_tinnitus_select_background"
android:button="@android:color/transparent"
android:gravity="center"
android:padding="8dp"
android:text="@string/more"
android:textColor="@drawable/rb_tinnitus_select_text"
android:textSize="18sp" />
</RadioGroup>
TapGestureFragment.kt - onCreateView:
enableSensitivityButtons()
var less_height: Int = less_button.layoutParams.height
var more_height= more_button.layoutParams.height
var default_height= default_button.layoutParams.height
if (default_height > less_height){
more_button.layoutParams.height = less_height
Log.i("shiva"," "+more_button.layoutParams.height)
}
Я называю такие представления
private fun enableSensitivityButtons(){
view!!.more_button.isEnabled = true
view!!.less_button.isEnabled = true
view!!.default_button.isEnabled = true
}
Ошибка Logcat:
2020-03-13 11:22:31.416 15325-15325/com.starkey.android.newlink.debug E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.starkey.android.newlink.debug, PID: 15325
java.lang.IllegalStateException: less_button must not be null
at com.starkey.android.newlink.fragments.TapGestureFragment.onCreateView(TapGestureFragment.kt:164)
at android.support.v4.app.Fragment.performCreateView(Fragment.java:2439)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1460)
at android.support.v4.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManager.java:1784)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1852)
at android.support.v4.app.BackStackRecord.executeOps(BackStackRecord.java:802)
at android.support.v4.app.FragmentManagerImpl.executeOps(FragmentManager.java:2625)
at android.support.v4.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2411)
at android.support.v4.app.FragmentManagerImpl.removeRedundantOperationsAndExecute(FragmentManager.java:2366)
at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:2273)
at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:733)
at android.os.Handler.handleCallback(Handler.java:873)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:201)
at android.app.ActivityThread.main(ActivityThread.java:6810)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:547)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:873)