Я довольно новичок в программировании и начал с Java, перешел на JavaFX как GUI разработку и только что занялся Android Разработка приложений с помощью Android Studio.
Исходя из JavaFX и его Концепция подключения пользовательского интерфейса к бэкэнд-контроллеру Меня немного смущает (по-видимому) гораздо более сложное взаимодействие Android пользовательского интерфейса с Java бэкэндом (контроллер, модель).
Мой сценарий: Я запрограммировал игровое приложение на JavaFX, которое работает вполне нормально. Я применил концепцию MVC, тогда как я использовал F XML для создания пользовательского интерфейса, имел класс Controller. java, который «соединял» все элементы пользовательского интерфейса через @ F XML с моим классом контроллера, и затем я мог - пересечь -метод в контроллере - доступ к моим элементам пользовательского интерфейса (например, для чтения значений из ползунков или их изменения), например:
@FXML
private text label;
public void readLabel(){
String labelText = label.getText();
}
Сейчас: в Android (с использованием Android Studio) я пытался применить ту же концепцию / идею, но не удалось, потому что, очевидно, различные виды, кнопки, тексты соответственно имеют свои собственные классы, которые необходимо привести друг к другу, чтобы их содержимое можно было использовать.
Итак, я следовал концепции Android и попытался первоначально объявить все элементы пользовательского интерфейса в классе MainActivity следующим образом:
public class MainActivity extends AppCompatActivity {
EditText inputText = (EditText) findViewById(R.id.text1);
EditText outputText = (EditText) findViewById(R.id.textOutput);
Button enterButton = (Button) findViewByID(R.id.button1);
...
Это потому, что я хочу использовать повторно (просто доступ / изменение ) их различными способами в рамках MainActivity. Вышеуказанный подход не удался из-за исключения NullPointerException. Я попытался инициализировать соответствующие объекты, например:
Button button1 = new Button();
, но это тоже не сработало.
Однако, если я использую вышеуказанный подход WITHIN, метод MainActivity, он работает нормально:
public class MainActivity extends AppCompatActivity {
public void enterMessage(View view){
EditText inputText = (EditText) findViewById(R.id.text1);
String textOutput = inputText.getText().toString();
EditText outputText = (EditText) findViewById(R.id.textOutput);
outputText.setText(textOutput);
}
, и я могу читать и изменять свои объекты пользовательского интерфейса.
Затем у меня появилась идея сделать stati c «метод контроллера» в MainActivity, чтобы я мог получить доступ к своему пользовательскому интерфейсу элементы из любого другого метода в моей MainActivity. Но это не сработает, потому что
findViewById()
не go вместе с методами stati c.
Таким образом, единственный способ, который я вижу сейчас, попробовав эти разные подходы, - это создать новые объекты и приведите их к необходимой переменной, например:
EditText inputText = (EditText) findViewById(R.id.text1);
String textOutput = inputText.getText().toString();
в КАЖДОМ методе, который я хочу создать в MainActivity.
Теперь мой вопрос: является ли концепция с Android Действительно, классы пользовательского интерфейса более сложные по сравнению с JavaFX, или я просто ошибаюсь где-то с основами? Любой намек на лучшую практику очень ценится. :)
Спасибо!