Урок 6. Первый взгляд на Java

В данной статье начнём разбираться непосредственно с кодом, который вдохнёт жизнь в наше приложение. Самая первая строчка в коде:

package com.example.mathgame;

Эта строка определяет пакет, которому мы дали имя во время создания проекта. По мере обучения, мы с вами будем писать более сложные приложения, которые будут включать в себя больше одного файла. И все эти файлы должны будут принадлежать одному пакету. По сути для самой игры эта строка кода ничего не делает. Обратите внимание на то, чем оканчивается эта строка “;”. Это часть синтаксиса языка Java и указывает она на окончание строки кода. Удалите “;” и получите ошибку от Android Studio, так как она попытается соединить две строки вместе.

 
Теперь вам необходимо нажать на маленькую иконку “+”, чтобы вам стали видны следующие строки:

открываем классы импортированные в наш проект

В моём случае мне открылись следующие строки:

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;

Думаю, вы заметили что они начинаются со слова “import”. Это инструкции, которые дают указания включить другие пакеты в нашем проекте. Это очень важный инструмент, так как он даёт нам возможность пользоваться тем кодом, который уже за нас написан другими программистами. Еще раз обратит внимание на то, что все строки заканчиваются “;”.

Следующая строка представляет собой фундаментальный строительный блок языка Java, известный как класс. Это очень важное понятие в Java и вскоре мы познакомимся с ним поближе:

public class MainActivity extends AppCompatActivity {

Разберём дословно: создай мне public class  с названием MainActivity, основанием которого (extends) является AppCompatActivity. Вы должны помнить, что MainActivity – это имя, которые мы выбрали, когда создавали проект. AppCompatActivity – это код (класс), написанный разработчиками Android, который позволяет поместить наш Java код в Android. Зоркий глаз мог заметить, что в конце этой строчки отсутствует “;”. Вместо этого мы видим открывающуюся фигурную скобку “{”. Это потому что MainActivity охватывает остальную часть кода. По сути, всё является частью нашего класса MainActivity, который построен на основе класса AppCompatActivity. Если прокрутить вниз, до нижней части окна редактора, вы увидите закрывающуюся фигурную скобку “}”. Это обозначает конец нашего MainActivity класса.

  • Пока нам не нужно в точности знать, как работает класс;
  • Мы будем использовать классы для доступа к некоторым методам, содержащимся в его коде;
  • Мы можем выбирать, когда и какие методы, определённые в классах, мы хотим переопределить(переиначить под наши нужды) или оставить по умолчанию.

Итак, у нас есть класс AppCompatActivity, который хранит в себе методы, позволяющие нам взаимодействовать с жизненным циклом Android приложения (yа данный момент не важно в точности понимать определение класса; достаточно знать того, что вы может включить (import) в свой проект другой пакет кода, который в свою очередь содержит в себе класс или несколько классов, функциональность которых вы, в свою очередь, в дальнейшем будете использовать; но естественно мы с вами в дальнейшем углубимся в тему классов).

Перейдем к фрагменту кода, который содержится после строки, который мы только что обсудили:

@Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.activity_main);
     }
 }

Первое, что мы видим – это слово @Override. Помните, мы говорили о том, что все методы, которые взаимодействуют с жизненным циклом Android приложения были реализованы по умолчанию и мы можем выбрать, когда и как их переопределить. Это как раз то, что мы делаем в методе “onCreate”. Слово @Override указывает нам то, что метод, который следует далее, переопределён. Строка “protected void onCreate(Bundle savedInstanceState) {” содержит метод, который мы переопределяем. Наверное, вы уже догадались, что действие этого метода начинается с “{” в конце рассматриваемой строки и заканчивается “}” через две строки. Несколько странно выглядящие слова “protected void” пока для нас тоже не важны и обрабатываются на данный момент без нас. Это связано с данными, которые перемещаются между частями нашего приложения. В данный момент нам важно знать, что то, что происходит в этой строке будет влиять на фазу создания (onCreate) жизненного цикла Android приложения. Остальное мы разберём позже.

 
Следующая строка :

super.onCreate(savedInstanceState);

Здесь – ключевое слова “super” ссылается на код в исходном методе onCreate, который находится там, несмотря на то, что мы его не видим. Код гласит: несмотря на то, что я переопределяю тебя, я хочу, чтобы ты всё сделал так, как обычно. Затем, после того, как onCreate проделает массу работы, которую мы не видим, идёт следующая строка:

setContentView(R.layout.activity_main);

Здесь мы указываем операционной системе Android установить основной вид (наш пользовательский экран), которым в нашем случае является меню нашей игры, созданное ранее. Чтобы ОС Android это поняла, мы в скобках указали, на что ей ссылаться (R.layout.activity_main).

Совсем скоро мы увидим в действии наше меню. Но прежде мы должны ознакомиться с тем, как строить проект и запускать его непосредственно на устройстве или эмуляторе. Лично я после пары запусков приложения на эмуляторе отказался от этой идеи, т.к. это занимает очень долгое время по сравнению с запуском приложения на реальном устройстве (что и вам советую). Об этом будет написано в следующей статье.