带有水平寻呼机的片段

问题描述 投票:0回答:1

我正在使用带有水平寻呼机的片段。目前,我有三个片段,但尽管尝试了一些方法,但它不起作用。 Toast 已显示,但片段不可见。

寻呼机功能

@OptIn(ExperimentalFoundationApi::class)
@Composable
fun IntroPager() {

val pagerState = rememberPagerState(pageCount = { 3 })
val context = LocalContext.current

HorizontalPager(state = pagerState, modifier = Modifier.fillMaxSize()) { page: Int ->

    Box (modifier = Modifier.fillMaxSize() , contentAlignment = Alignment.Center){

        when (page) {
            0 -> {
                Toast.makeText(context, "Intro 1", Toast.LENGTH_SHORT).show()
                IntroFragment1()
            }
            1 -> {
                Toast.makeText(context, "Intro 2", Toast.LENGTH_SHORT).show()
                IntroFragment2()
            }

            2 -> {
                Toast.makeText(context, "Intro 3", Toast.LENGTH_SHORT).show()
                IntroFragment3()
            }

            else -> error("Invalid page: $page")
        }
    }
  }
}

片段1

class IntroFragment1 : Fragment() {
override fun onCreateView(
    inflater: LayoutInflater,
    container: ViewGroup?,
    savedInstanceState: Bundle?
): View {
    return ComposeView(requireContext()).apply {
       setContent {

           Column (Modifier.fillMaxSize(),
               verticalArrangement = Arrangement.Center,
               horizontalAlignment = Alignment.CenterHorizontally){
               Text(text = "Intro Fragment 1")
           }

       }
    }
  }
}

另外两个片段与第一个片段相同。

android kotlin android-jetpack-compose android-jetpack
1个回答
0
投票

您可以简单地提供可组合函数,如下所示,而不是在

HorizontalPager
中提供片段:

when (page) {
    0 -> {
        Toast.makeText(context, "Intro 1", Toast.LENGTH_SHORT).show()
        IntroComposable1()
    }
    1 -> {
        Toast.makeText(context, "Intro 2", Toast.LENGTH_SHORT).show()
        IntroComposable2()
    }
    2 -> {
        Toast.makeText(context, "Intro 3", Toast.LENGTH_SHORT).show()
        IntroComposable3()
    }
    else -> error("Invalid page: $page")
}

然后创建三个类似的Compoables

@Composable
fun IntroComposable1() {

    Text(
        text = "IntroComposable1"
    )
}

@Composable
fun IntroComposable2() {

    Text(
        text = "IntroComposable2"
    )
}
© www.soinside.com 2019 - 2024. All rights reserved.