如何获取 Activity 以便将其传递给 androidStudio 中的函数?

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

我按照 YouTube 上的教程来获取位置。它运行良好,但我尝试将其更改为一个函数,以便我可以在使用 navcontroller 的应用程序中使用它,现在它要求一个活动,我尝试传递它被调用的屏幕,但我收到错误。我必须在函数中传递什么参数才能使其正常工作?这是我的代码

@Composable
fun LoginScreen(
    navController : NavController
) {

   
    val context = LocalContext.current

    Column(
        modifier = Modifier
            .fillMaxSize(),
        horizontalAlignment = Alignment.CenterHorizontally
    ) {
        
        Button(onClick = {
                
            fetchLocation(context, this) <-----Here is the error. I tried Screens.Login and Login 

这是函数

private fun fetchLocation(context: Context, Login: Activity): MutableList<Double> {

    lateinit var fusedLocationProviderClient: FusedLocationProviderClient
    fusedLocationProviderClient = LocationServices.getFusedLocationProviderClient(context)
    val task = fusedLocationProviderClient.lastLocation
    var coordinate: MutableList<Double> = mutableListOf()

    if(ActivityCompat.checkSelfPermission(context, android.Manifest.permission.ACCESS_FINE_LOCATION)
        != PackageManager.PERMISSION_GRANTED && ActivityCompat
            .checkSelfPermission(context, android.Manifest.permission.ACCESS_COARSE_LOCATION)!= PackageManager.PERMISSION_GRANTED
    ){
        ActivityCompat.requestPermissions(Login, arrayOf(android.Manifest.permission.ACCESS_FINE_LOCATION), 101)
        //in requestPermissions, if I put context instead of Login I get told to put an activity
        return coordinate
    }
    task.addOnSuccessListener{
        if(it !=null) {
            coordinate.add(it.longitude)
            coordinate.add(it.latitude)


        }
    }
    return coordinate
}
kotlin android-studio android-jetpack-compose
1个回答
0
投票

你需要将上下文作为 Activity

ActivityCompat.requestPermissions(context as Activity, arrayOf(android.Manifest.permission.ACCESS_FINE_LOCATION), 101)
return coordinate
© www.soinside.com 2019 - 2024. All rights reserved.