CS 2122:- Mobile Programming
By Mesfin Belachew /PhD/
Assistant Professor,
15/1/20 AAiT
Android Programming
2
5/1/20 AAiT
Activities and Intents
5/1/20 AAiT 3
One App may have multiple activities,
each can be used to display a group of
components that are related to each
other,
For example, when you click a button in
the main activity, user can move to next
activity, then from the second to third,
etc. and backwards,
Activities and Intent
1
How to create second
activity (main activity is
created by default), select
app, new, activity, empty
activity,
Name the second activity,
don’t check the launcher
activity option, select
language and create,
Once it is created, a number
of changes will happen in
different part of the program
5/1/20 AAiT 4
Activates and Intents ….. Activities
New files activity_second.xml,
and SecondActivity.java are
created,
Changes in AndroidManifest.xml
Open activity_second.xml and
add some components you wish
for example TextView
Once it is done, add intent to call
the created activity,
You can add one button in the
activity_main.xml and define
onClick action to the button
5/1/20 AAiT 5
Activates and Intents ….. Activities
Intent is created in the main
Java code,
Intent is used to activate the
second Activity when the
button is clicked,
In MainActivity.java, add some
instructions to define the
intent,
Intent constructor takes two
arguments, the context and
the class to be called, the java
class SecondActivity.java
5/1/20 AAiT 6
Activates and Intents ….. Intents
……….
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void launchSecondActivity(View view) {
Intent intent = new Intent(this, SecondActivity.class);
startActivity(intent);
}
………..
In the activity_second.xml we need to
add a button to go back to main activity,
Define OnClick action to the button
created,
Define the method backToMainActivity in
the SecondActivity.java to finish this
activity
After adjusting the above user can go
from main activity to second activity and
back,
Some activity can be associated in each
activities, like transferring value from one
activity to the second, etc.
5/1/20 AAiT 7
Activates and Intents ….. Intents
……….
public class SecondActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout. activity_second);
}
public void backToMainActivity(View view) {
finish();
}
………..
How to transfer some value from
main activity to the second activity,
Define EditText component and send
button in the main activity,
In the second activity, create TextView
and back button,
After user enters a message in
EditText, main activity, and click the
send button, the same message
should be displayed on the second
activity,
5/1/20 AAiT 8
Activates and Intents ….. Intents
How to transfer some value from
main activity to the second activity,
Define EditText component and send
button in the main activity,
In the second activity, create TextView
and back button,
After user enters a message in
EditText, main activity, and click the
send button, the same message
should be displayed on the second
activity,
Hint how to implement ….. In
MainAvtivity
5/1/20 AAiT 9
Activates and Intents ….. Intents
……….
public class MainActivity extends AppCompatActivity {
public final static String EXT_MESSAGE ="com.app…..MESSAGE";
EditText msgFromMain;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
msgFromMain = (EditText) findViewById(R.id.msgToTransfer);
}
public void launchSecondActivity(View view) {
Intent intent = new Intent(this, SecondActivity.class);
String message = msgFromMain.getText().toString();
intent.putExtra(EXTRA_MESSAGE, message);
startActivity(intent);
}
}
………..
How to transfer some value from
main activity to the second activity,
Define EditText component and send
button in the main activity,
In the second activity, create TextView
and back button,
After user enters a message in
EditText, main activity, and click the
send button, the same message
should be displayed on the second
activity,
Hint how to implement ….. in
MainAvtivity, and in SecondActivity
5/1/20 AAiT 10
Activates and Intents ….. Intents
……….
public class SecondActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
Intent intent = getIntent();
String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE);
TextView textView = findViewById(R.id.textView);
textView.setText(message);
}
public void backToMainActivity(View view) {
finish();
}
}
………..
List View
5/1/20 AAiT 11
is a view group that displays a list of
related content,
list is usually can be scrolled vertically,
two type of list view, ListView &
SpinnerView,
ListView - displays a vertical long list,
text, text & image, multiple items, etc.
ListView
2
List View ……
5/1/20 AAiT 12
……….
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content
android:gravity="center">
<ListView
android:id="@+id/list_fruits"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</RelativeLayout>
……….
……….
public class MainActivity extends AppCompatActivity {
String[] fruits = { "Apple", "Orange", "Grapes", "Mango", "Peach",
"Cherry", "Jackfruit", "Banana", "Apple", "Pineapple"};
@Override
protected void onCreate(Bundle savedInstanceState) {
……….
}
………..
In activity xml file we need to define
ListView, similarly to all components,
Define a string array to contain all
the lists to be displayed in the
MainActivity.java,
ListView ……
5/1/20 AAiT 13
In activity xml file we need to define
ListView, similarly to all components,
Define a string array to contain all
the lists to be displayed in the
MainActivity.java,
Define the ListView in the
MainActivity to associate with
specific actions when the list is
clicked,
We need also to define a list adaptor
to hold the list to be created,
Set also item click listener to react to
the selection
……….
public class MainActivity extends AppCompatActivity {
ListView listFruits;
@Override
protected void onCreate(Bundle savedInstanceState) {
……….
listFruits = (ListView) findViewById(R.id.list_fruits);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, fruits);
listFruits.setListAdapter(adapter);
listFruits.setOnItemClickListener(
new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView,
View view, int i, long l) {
Toast.makeText(getApplicationContext(), "Selected ” +
fruits[i], Toast.LENGTH_SHORT).show();
}
});
}
………..
List View …… Example
5/1/20 AAiT 14
Try this for more practice, change list
to checked layout, add choice mode.
……….
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, fruits);
………..
……….
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
android.R.layout. simple_list_item_checked, fruits);
listFruits.setChoiceMode(1); // change this value for more
………..
Spinner View
5/1/20 AAiT 15
SpinnerView - displays one item at a time
from the list,
provide a quick way to select one value
from a set,
touching the spinner displays a dropdown
menu with all other available values,
displays a vertical long list, text, text &
image, multiple items, etc.,
SpinnerView
3
Spinner View ……
5/1/20 AAiT 16
Spinner to your layout with the
Spinner object in xml is to be
defined,
In activity xml file we need to
define SpinerView, similarly to all
components, with id, width and
height,
to populate the spinner with a list
of choices, we need to specify a
SpinnerAdapter in the source code
……….
<Spinner
android:id="@+id/spinner_direction"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
……….
Spinner View ……
5/1/20 AAiT 17
Populate the Spinner (three major steps):
1. defined a string resource file, in separate
xml file under resource,
2. supply the spinner with the array using an
instance of ArrayAdapter, and
3. Respond to user selection using
OnItemSelectedListener
……….
<resources>
<string-array name=direction_array">
<item>North</item>
<item>South</item>
<item>East</item>
<item>West</item>
</string-array>
</resources>
……….
1
……….
Spinner spinner = (Spinner) findViewById(R.id.spinner_direction);
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this,
R.array.direction_array, android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);
……….
2
Spinner View ……
5/1/20 AAiT 18
OnItemSelectedListener
……….
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> adapterView, View view, int pos, long id)
{
// do if item is selected
}
@Override
public void onNothingSelected(AdapterView<?> adapterView)
{
// do if nothing selected
}
});
……….
3
Spinner View …… Example
5/1/20 AAiT 19
Spinner Example (practical exercise)
Create the shown Spinner and display the
selected country as an output.
Hint: spinner.getItemAtPosition(pos).toString() can
be used to extract the selected spinner item
Radio Button
5/1/20 AAiT 20
allow the user to select one option from
a set,
selection for optional sets that are
mutually exclusive,
create a RadioButton in your layout
(xml file),
must group them together inside a
RadioGroup, to achieve exclusivity,
Only one button is selected from one
group,
Radio Buttons
4
Radio Button ……
5/1/20 AAiT 21
Radio button can be
implemented in two major
steps,
1. define radio button elements in
xml file (layout)
2. define method to handles the
click event in the Activity (in the
source code), this time a method
onRadioButtonClicked is defined
(onClick)
……….
<RadioGroup
android:id="@+id/selectGender"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical”>
<RadioButton
android:id="@+id/radio_male"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checked="true"
android:text="Male"
android:onClick="onRadioButtonClicked"/>
<RadioButton
android:id="@+id/radio_female"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Female"
android:onClick="onRadioButtonClicked/>
</RadioGroup>
……….
1
Radio Button ……
5/1/20 AAiT 22
Define onRadioButtonClicked
method:
this method will be called
when one of the radio button
is clicked,
Use Toast.makeText(this, "Male is
clicked", Toast.LENGTH_SHORT).show();
to check the result for each
cases
……….
public void onRadioButtonClicked(View view) {
boolean checked = ((RadioButton) view).isChecked();
switch(view.getId()) {
case R.id.radio_male:
if (checked)
// action when male button is clicked
break;
case R.id.radio_female:
if (checked)
// action when female button is clicked
break;
}
}
……….
2
Radio Button …… Example
5/1/20 AAiT 23
Radio Button Example (practical exercise)
Create the shown layout and show the output when
submit button is created.
Check Boxes
5/1/20 AAiT 24
allow the user to select one or more options
from a set,
CheckBox element will be created in your
layout (xml file), each will have id,
Call specific method when each check box
selected and act accordingly from there,
Check Boxes
5
Check Boxes……
5/1/20 AAiT 25
We can use the following
step to crate check boxes:
1. Create the check box
elements in your layout (in
the xml file)
2. Associate onClick instruction
to the method defined in the
main activity (in the source
code)
<LinearLayout
android:id="@+id/checkBoxLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical>
<CheckBox
android:id="@+id/checkbox_meat"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Meat"
android:onClick="onCheckboxClicked/>
<CheckBox
android:id="@+id/checkbox_cheese"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Cheese"
android:onClick="onCheckboxClicked/>
</LinearLayout>
1
Check Boxes……
5/1/20 AAiT 26
Define onCheckboxClicked method: (in the main activity)
public void onCheckboxClicked(View view) {
boolean checked = ((CheckBox) view).isChecked();
switch(view.getId()) {
case R.id.checkbox_meat:
if (checked) {
Toast.makeText(getApplicationContext(), "Put some meat", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(getApplicationContext(), "No meat", Toast.LENGTH_SHORT).show();
}
break;
case R.id.checkbox_cheese:
if (checked) {
Toast.makeText(getApplicationContext(), "Put some cheese", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(getApplicationContext(), "No cheese", Toast.LENGTH_SHORT).show();
}
break;
} }
2
Check Boxes …… Example
5/1/20 AAiT 27
Check Boxes Example (practical exercise)
Create the shown layout and show the output
when a box is always selected.
Enable all box is used to check and unchecked all
the other three check boxes,