CircularProgressIndicator с ошибкой AndroidFragmentAndroid

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 CircularProgressIndicator с ошибкой AndroidFragment

Сообщение Anonymous »

Я сообщил об этом как ошибку Google:
https://issuetracker.google.com/issues/422861653
Но я решил получить здесь хорошие отзывы. Проблема заключается в том, что он выглядит как смешивание AndroidFragment с помощью циркулярного программного индикатора запускает ошибку. Если у вас есть CircularProgressIndicator в одном из AndroidFragment , и у вас есть столбец AndroidFragment достаточно длинный, чтобы прокрутить, как только вы прокрутите клики на любую другую композицию, остановит.

Код: Выделить всё

package com.test.circularprogress

import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.Toast
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.activity.enableEdgeToEdge
import androidx.compose.foundation.background
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size
import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.verticalScroll
import androidx.compose.material3.Button
import androidx.compose.material3.CircularProgressIndicator
import androidx.compose.material3.Scaffold
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.platform.ComposeView
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import androidx.core.content.ContentProviderCompat.requireContext
import androidx.fragment.app.Fragment
import androidx.fragment.app.FragmentActivity
import androidx.fragment.compose.AndroidFragment
import com.test.circularprogress.ui.theme.MyApplicationTheme
import kotlin.jvm.java

class FragmentA: Fragment() {
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
return ComposeView(requireContext()).apply {
setContent {
FragmentAScreen(onClick = ::clickedSomething)
}
}
}

private fun clickedSomething() {
Toast.makeText(requireContext(), "Clicked Something", Toast.LENGTH_SHORT).show()
}

@Composable
private fun FragmentAScreen(
onClick: (() ->  Unit) = {}
) {
Column() {
Text(text = "FragmentA")
Button(onClick = onClick ) {
Text(text = "Click ME! ")
}
}
}
}

class FragmentB: Fragment() {
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
return ComposeView(requireContext()).apply {
setContent {
Column(modifier = Modifier.background(Color.Red)) {
Text(text = "FragmentB ")
CircularProgressIndicator(modifier = Modifier.size(40.dp))
}
}
}
}
}

class FragmentC: Fragment() {
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
return inflater.inflate(R.layout.fragment_c, container, false)
}
}

class FragmentD: Fragment() {
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
return ComposeView(requireContext()).apply {
setContent {
Column(modifier = Modifier.height(700.dp).background(Color.Blue)) {
Text(text = "FragmentD")
}
}
}
}
}

class MainActivity : FragmentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
enableEdgeToEdge()
setContent {
MyActivityScreen()
}
}
}

@Composable
@Preview
private fun MyActivityScreen() {
MyApplicationTheme {
Scaffold(modifier = Modifier.fillMaxSize()) { innerPadding ->
Column(
modifier = Modifier
.padding(innerPadding)
.verticalScroll(rememberScrollState())
) {
AndroidFragment(clazz = FragmentA::class.java)
AndroidFragment(clazz = FragmentB::class.java)
AndroidFragment(clazz = FragmentD::class.java)
AndroidFragment(clazz = FragmentC::class.java)
AndroidFragment(clazz = FragmentD::class.java)

}
}
}
}
Как только вы прокомментируете CircularProgressIndicator , все работает нормально. Есть идеи относительно того, насколько обстоят эту проблему? До сих пор я пытался:
  • Использовать сторонние спиннеры
  • Реализовать пользовательский прядильщик, который использует запуск для анимирования вместо любого запоминания
.>

Подробнее здесь: https://stackoverflow.com/questions/796 ... agment-bug
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • CircularProgressIndicator с ошибкой AndroidFragment
    Anonymous » » в форуме Android
    0 Ответы
    3 Просмотры
    Последнее сообщение Anonymous
  • CircularProgressIndicator с ошибкой AndroidFragment
    Anonymous » » в форуме Android
    0 Ответы
    3 Просмотры
    Последнее сообщение Anonymous
  • Отображение фрагмента в Jetpack Compose с использованием AndroidFragment<>
    Anonymous » » в форуме Android
    0 Ответы
    28 Просмотры
    Последнее сообщение Anonymous
  • Отображение фрагмента в Jetpack Compose с использованием AndroidFragment<>
    Anonymous » » в форуме Android
    0 Ответы
    23 Просмотры
    Последнее сообщение Anonymous
  • Использование AndroidFragment внутри Compose BottomNavigation воссоздается.
    Anonymous » » в форуме Android
    0 Ответы
    16 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Android»