JavaFX TextField Android застрял
Я уже пару дней использую JavaFX, и теперь у меня проблема с текстовым полем на Android.
У меня есть очень простое приложение с одним текстовым полем. Когда я нажимаю на него, чтобы ввести текст, все в порядке.
Как вы можете видеть здесь
Но когда я закончил печатать и нажал на другие элементы, пользовательский интерфейс застрял. Анимации не отображаются. Когда я снова нажимаю на текстовое поле, клавиатура появляется без проблем, я могу печатать, я слышу обычный звук набора текста на Android, но пользовательский интерфейс все еще застрял, и визуально текстовое поле не меняется, как вы видите здесь.
Волшебство происходит, когда я выключаю дисплей и снова включаю его. После этого я вижу, что все, что я набрал, находится внутри TextField. Пользовательский интерфейс не застрял, и текст, который я печатаю, отображается правильно. Но когда я нажимаю на другую кнопку, она ломается, как в первый раз.
Кроме того, я попытался использовать TextField из javafx.scene.control и com.gluonhq.charm.glisten.control, и они оба не работают.
Код, который я использую:
BasicView.java
package com.gluonapplication;
import com.gluonhq.charm.glisten.control.AppBar;
import com.gluonhq.charm.glisten.mvc.View;
import com.gluonhq.charm.glisten.visual.MaterialDesignIcon;
import com.gluonhq.charm.glisten.control.TextField;
public class BasicView extends View
{
TextField field;
public BasicView(String name)
{
super(name);
field = new TextField();
setTop(field);
}
@Override
protected void updateAppBar(AppBar appBar)
{
appBar.setTitleText("Basic View");
appBar.getActionItems().add(MaterialDesignIcon.SEARCH.button(e -> System.out.println("Search")));
}
}
GluonApplication.java
package com.gluonapplication;
import com.gluonhq.charm.glisten.application.MobileApplication;
import com.gluonhq.charm.glisten.visual.Swatch;
import javafx.scene.Scene;
import javafx.scene.image.Image;
import javafx.stage.Stage;
public class GluonApplication extends MobileApplication
{
public static final String BASIC_VIEW = HOME_VIEW;
@Override
public void init()
{
addViewFactory(BASIC_VIEW, () -> new BasicView(BASIC_VIEW));
}
@Override
public void postInit(Scene scene) {
Swatch.BLUE.assignTo(scene);
((Stage) scene.getWindow()).getIcons().add(new Image(GluonApplication.class.getResourceAsStream("/icon.png")));
}
}
build.gradle
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'org.javafxports:jfxmobile-plugin:1.0.9'
}
}
apply plugin: 'org.javafxports.jfxmobile'
repositories {
jcenter()
maven {
url 'http://nexus.gluonhq.com/nexus/content/repositories/releases'
}
}
mainClassName = 'com.gluonapplication.GluonApplication'
dependencies {
compile 'com.gluonhq:charm:3.0.0'
androidRuntime 'com.gluonhq:charm-android:3.0.0'
iosRuntime 'com.gluonhq:charm-ios:3.0.0'
desktopRuntime 'com.gluonhq:charm-desktop:3.0.0'
}
jfxmobile {
android {
manifest = 'src/android/AndroidManifest.xml'
androidSdk = 'D:\\AMAZING_THINGS\\AndroidSdk'
compileSdkVersion = '16'
}
}
Итак, вопрос в том, как достичь эффекта "выключение / включение экрана"? Я чувствую, что это связано с потерей фокуса и обновлением интерфейса, но я не уверен.
Спасибо за ваше время.
Я использую Android 4.1.1, Java 8