Ошибка «Неожиданные токены» при вызове функции - PullRequest
0 голосов
/ 25 мая 2019

У меня возникли некоторые проблемы с синтаксисом Kotlin, он требует точки с запятой внутри вызова функции (?!).

Я просто пытался преобразовать код с веб-сайта AltBeacon, который использовался для грубой обработкиместоположение разрешения .Вот что я придумаю в спешке:

class MainActivity : AppCompatActivity() {



    val TAG = "MAIN_ACTIVITY"
    val PERMISSION_REQUEST_COARSE_LOCATION = 1


    override fun  onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M){
            if (checkSelfPermission(Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED){
                val  builder = AlertDialog.Builder(this)
                builder.setTitle("This app needs location access")
                builder.setMessage("Please grant location access so this app can detect beacons.")
                builder.setPositiveButton(android.R.string.ok, null)
                builder.setOnDismissListener {
                    val permissions = arrayOf(Manifest.permission.ACCESS_COARSE_LOCATION)
                    requestPermissions(permissions, PERMISSION_REQUEST_COARSE_LOCATION)

                }
                builder.show()

            }
        }

    }


    override fun onRequestPermissionsResult(requestCode: Int, permissions: Array<String>,  grantResults: IntArray) {
            when (requestCode) {
                PERMISSION_REQUEST_COARSE_LOCATION-> {
                if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                    Log.d(TAG, "coarse location permission granted")
                } else {
                    val builder = AlertDialog.Builder(this)
                    builder.setTitle("Functionality limited")
                    builder.setMessage("Since location access has not been granted, this app will not be able to discover beacons when in the background.");
                    builder.setPositiveButton(android.R.string.ok, null)
                    builder.setOnDismissListener { }
                    builder.show()
                }
            }
        }
    }



}

У компилятора есть проблемы с этой строкой:

requestPermissions(permissions, PERMISSION_REQUEST_COARSE_LOCATION)

Unexpected tokens (use ';' to separate expressions on the same line)

1 Ответ

3 голосов
/ 25 мая 2019

С синтаксисом kotlin все в порядке.
Проблема в том, что у вас есть странный невидимый символ в конце этой строки. Я вставил этот код в блокнот ++ и увидел это: enter image description here
Так что просто удалите его, и компиляция будет успешной.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...