• 20 hours
  • Easy

Free online content available in this course.

course.header.alt.is_video

course.header.alt.is_certifying

Got it!

Last updated on 12/21/23

Reference Graphical Elements In Your Activity

The GUI is ready - now it's time to look at the Activity's Java code. Open MainActivity located in  thejava/name.of.your.package  directory.

Displaying the Interface

The  MainActivity  class was created automatically by Android Studio when we chose the Empty Activity template. The only implemented method:

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

The  onCreate()  method is invoked when Android creates the Activity (we'll learn about the Activity life cycle at the end of this course). The line that interests us here is line 4: the setContentView() determines which layout file to associate with this Activity.

We specify the layout file with a special syntax:R.layout.filename (without the XML extension). When compiling the project, Android Studio generates a Java class called R (for Resources), which contains numerical identifiers for every project resource. These resources can be layout files, text strings, images, and so on. We will take a closer look at this class after compiling the project.

Referencing Graphical Elements

Declare Variables

As a reminder, we have three graphic elements in our interface:

  • The welcome text

  • The input field for the user's first name

  • And the play button

To interact with these elements in code, we have to reference them in our Activity. Add three member variables to the MainActivity class:

private TextView mGreetingText;
private EditText mNameInput;
private Button mPlayButton;

As you type these (e.g.  TextView ), the type appears in red. That's because this type is unknown: we have to import the class wherever we define this type. For example, for the TextView type, import the TextView class located in the android.widget package by typing the following line at the top of the file:

import android.widget.TextView;

To save yourself countless hours of typing lines character by character, place your cursor anywhere on the demarcated line and click alt + enter (return). Android Studio will offer import options corresponding to the unknown class name. Select the correct one, then hit enter once again to import the class. Time: saved.

In the codebase, a popup menu appears above the TextView with a suggestion.
Automatically import the class you need by hitting ALT + ENT

Identify the Graphic Elements

Imagine that you have five TextView elements, one after another. How would you distinguish them? By providing each with an identifier. To do this, we use the android:id attribute, and its value must always be "@+id/{your-identifier}." For example:

<TextView
    android:id="@+id/activity_main_greeting_txt"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:padding="20dp"
    android:text="Welcome! What's your name?"/>

<EditText
    android:id="@+id/activity_main_name_input"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginStart="20dp"
    android:layout_marginEnd="20dp"
    android:hint="Please type your name"/>

<Button
    android:id="@+id/activity_main_play_btn"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginTop="20dp"
    android:padding="30dp"
    android:layout_gravity="center_horizontal"
    android:text="Let's play"/>

Linking Variables

Now we are ready to reference the three graphical elements from code. We will use findViewById() to accomplish this. The method requires one parameter: the integer identifier of the view that we want. The method returns the corresponding view (if found). The syntax we use for the parameter is specific: you must specify R.id.{view_identifier}.

Also note that findViewById() returns a View. Therefore, in most cases, we need to cast View to the specific type we need.

Here is the sample code you can add to onCreate() :

mGreetingTextView = (TextView) findViewById(R.id.activity_main_greeting_txt);
mNameInput = (EditText) findViewById(R.id.activity_main_name_input);
mPlayButton = (Button) findViewById(R.id.activity_main_play_btn);

With our three graphical elements properly referenced, we can start playing with them.

Let's Review With a Demo

You can see these steps in the video below:

Let's Recap!

  • We can only use the  findViewById()   method after using the setContentView() method.

  • Use  findViewById()  to access layout elements in the Activity.

  • An element must have an id attribute in the layout file for us to reference it from the Activity.

In this chapter, we’ve seen how to reference graphical elements in the Activity. Now let’s find out how to interact with the user and respond to their actions!

Ever considered an OpenClassrooms diploma?
  • Up to 100% of your training program funded
  • Flexible start date
  • Career-focused projects
  • Individual mentoring
Find the training program and funding option that suits you best
Example of certificate of achievement
Example of certificate of achievement