Вызов функции kotlin из класса Java создает ошибку - PullRequest
0 голосов
/ 14 января 2019

Я пытаюсь вызвать функцию класса kotlin из класса Java, но вместо этого получаю сообщение об ошибке. Я добавил как kotlin, так и java-код внутри java-класса. Ниже приведен код, и я получаю сообщение об ошибке при использовании контекста.

KotlinClass:

class TestDatabaseHandler(var context: Context?) :
    SQLiteOpenHelper(context, DATABASE_NAME, null, DATABASE_VERSION)

{
    fun insertSerialNo(serialno: String)
    {
        val db=this.writableDatabase
        var cv=ContentValues()
    }
}

JavaClass:

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        String serialno =123456;
        Intent intent = new Intent(MainActivity.this, Test.class);
        intent.putExtra("serialno", serialno);

        //Below Four lines of Code Error in JavaClass
        var db= TestDatabaseHandler(this.applicationContext)
        db.insertSerialNo(serialno)
        //Java Conversion
        String db= new TestDatabaseHandler(this.context);
        db.insertSerialNo(serialno);

        startActivity(intent);

    }
}

Ошибка:

1) Не удается найти контекст символа

2) Не удается разрешить метод insertSerialNo

1 Ответ

0 голосов
/ 14 января 2019
//Below Four lines of Code Error in JavaClass
var db= TestDatabaseHandler(this.applicationContext)
db.insertSerialNo(serialno)
//Java Conversion
String db= new TestDatabaseHandler(this.context);
db.insertSerialNo(serialno);

Не считая комментариев:

Первые две строки в Котлине. В Java нет синтаксиса var, а для создания новых экземпляров требуется ключевое слово new. Удалите эти строки.

Вторые две строки - правильный синтаксис Java для строк Kotlin выше. Однако такого понятия, как Activity.context, не существует. Деятельность уже является контекстом. Просто пройдите this, а не this.context.

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