Kotlin Android начинает новую деятельность

Я хочу начать еще одно действие на Android, но я получаю эту ошибку:

Пожалуйста, укажите вызов конструктора; У классификатора 'Страница2' нет сопутствующего объекта

после создания экземпляра класса Intent . Что я должен сделать, чтобы исправить ошибку? Мой код:

 class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) } fun buTestUpdateText2 (view: View) { val changePage = Intent(this, Page2) // Error: "Please specify constructor invocation; // classifier 'Page2' does not have a companion object" startActivity(changePage) } } 

Чтобы запустить Activity в java, мы написали Intent(this, Page2.class) , в основном вам нужно определить Context в первом параметре и целевом классе во втором параметре. Согласно методу Intent в исходном коде –

  public Intent(Context packageContext, Class<?> cls) 

Как вы можете видеть, мы должны передать Class<?> Type во втором параметре.

Написав Intent(this, Page2) мы никогда не укажем, что мы собираемся передать класс, мы пытаемся передать тип class который неприемлем.

Используйте ::class.java который является альтернативой .class в kotlin. Используйте приведенный ниже код, чтобы начать свою Activity

 Intent(this, Page2::class.java) 

Вы можете попробовать это,

 val intent = Intent(this, SecondActivity::class.java) intent.putExtra("key", value) startActivity(intent) 

Попробуй это

 val intent = Intent(this, Page2::class.java) startActivity(intent) 

Это связано с тем, что ваш класс Page2 не имеет объекта-компаньона, который аналогичен static в Java, поэтому для использования вашего класса. Чтобы передать свой класс в качестве аргумента в Intent , вам нужно будет сделать что-то вроде этого

 val changePage = Intent(this, Page2::class.java) 

Чтобы начать новую деятельность, вы можете просто сделать это,

 startActivity(Intent(context, ActivityName::class.java)) 

например,

 startActivity(Intent(this, AboutActivity::class.java)) 

Чтобы начать новую активность,

 startActivity(Intent(this@CurrentClassName,RequiredClassName::class.java) 

Таким образом, вы меняете код следующим образом:

 class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) } fun buTestUpdateText2 (view: View) { startActivity(Intent(this@MainActivity,ClassName::class.java)) // Also like this val intent = Intent(this@MainActivity,ClassName::class.java) startactivity(intent) } 
Intereting Posts
В библиотеке Injekt для Kotlin, как мне вводить функции вместо значений? бесконечные последовательности kotlin с функцией итератора Вывод лямбда-типа Java не работает должным образом в Котлине Kotlin встроенное ключевое слово, вызывающее IntelliJ IDEA Отчетность о покрытии 0% В Kotlin, как мне расширить класс, который имеет несколько конструкторов? Как вы объявляете полиморфное поле, которое использует JsonTypeInfo.As.WRAPPER_OBJECT с Jackson XML? Лучший способ назначить, только если правая сторона не равна нулю? Ни один из следующих кандидатов не отвечает из-за несоответствия типа приемника Исключение происходит во время действия Expression Expression: Как получить фиксированное количество изменяемых размеров ячеек без заполнения в javafx? Kotlin ": некоторые файлы JAR в пути к классам имеют библиотеку Runtime Kotlin, вложенную в них" В какой ситуации val / var необходим в параметре конструктора Котлина? @CreationTimestamp и @UpdateTimestamp не работают в Котлине Невыполнение результата по результату Обнаружение молчания в аудиофайле (amr) с использованием Java / Kotlin на устройствах Android