college/Summer-2024/CS-3443/Slides/txt/21_Android App Development - Rowdy Quiz Multi Screen.txt

269 lines
4.3 KiB
Plaintext
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

Application
Programming
Hend Alkittawi
Android Development
Building a Multi-screen App
ROWDY QUIZ APP
-
We created the Rowdy Quiz app to read questions from a data
file and display them to the user.
-
We also added a logo to our screen
ROWDY QUIZ APP
-
We will modify the app to allow the user to peek at the answer
BUILDING A MULTI-SCREEN APP
-
To add a new screen to an Android app
1.
create a new activity and a new layout using the new activity
wizard
-
Right click on app > New > Activity > Empty Views Activity
-
this will create a new layout file and update the
AndroidManifest.xml file
-
the manifest is an xml file that contains metadata that describes
your application to the Android OS
-
every activity in an application must be declared in the manifest
so that the OS can access it
2.
add code to start the new activity
CREATING A NEW ACTIVITY
CREATING A NEW ACTIVITY
-
Create a new activity and a new layout using the new activity
wizard
-
The layout for the new screen has
-
LinearLayout
-
ImageView
-
TextView
-
TextView
-
Button
STARTING A NEW ACTIVITY
-
The simplest way to start another activity is with the
startActivity() method
Intent intent = new Intent(currentActivity, newActivity.class);
startActivity(intent)
-
For our app, MainActivity will start the PeekActivity in
response to a click on the Peek button
-
Add the following method to MainActivity.java and call it as
appropriate!
private void launchActivity() {
MainActivity
Intent intent = new Intent(this, PeekActivity.class);
}
startActivity(intent);
PeekActivity
STARTING A NEW ACTIVITY
-
Sometimes it is necessary to pass data between the starting
activity (parent) and the started activity (child).
-
When starting an activity, the starting (parent) activity can
add an extra to the intent with the putExtra() method
-
extras are arbitrary data that the calling activity can include
with an intent
-
an extra is a structured key-value pair
Intent intent = new Intent(currentActivity, newActivity.class);
intent.putExtra(name, value);
startActivity(intent)
STARTING A NEW ACTIVITY
-
Sometimes it is necessary to pass data between the starting
activity (parent) and the started activity (child)
-
to retrieve the extra from the intent use the get[type]Extra()
method
value = getIntent().get[type]Extra(name, default_val);
-
available methods
-
getBooleanExtra()
-
getCharExtra()
-
getIntExtra()
-
getStringExtra()
… etc.
STARTING A NEW ACTIVITY
-
For our app, MainActivity should pass the answer of the
current question to the PeekActivity so that the answer is
displayed to the user when the Show Answer button in is
clicked
// some code is omitted .. new code is highlighted here
// refer to full code on Github
// some code is omitted
// refer to full code on Github
public class MainActivity extends AppCompatActivity {
public class PeekActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_peek);
private static final String intentKey = "answer";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button button = findViewById(R.id.show_answer_button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String answer =
getIntent().getStringExtra(MainActivity.decodeIntent());
Button peekButton = findViewById(R.id.peek_button);
peekButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
launchActivity();
}
});
getIntent().getStringExtra(“answer”);
TextView answerTextView = findViewById(R.id.shown_answer);
answerTextView.setText(answer);
}
private void launchActivity() {
Intent intent = new Intent(this, PeekActivity.class);
intent.putExtra(intentKey, String.valueOf(getAnswer()));
startActivity(intent);
}
public static String decodeIntent(){
return intentKey;
}
}
}
});
}
}
BUILDING A MULTI-SCREEN APP
-
Rowdy Quiz Sequence Diagram
RowdyQuiz
Android OS
ActivityManager
MainActivity
User presses Peek
button, onClick()
called
Intent
startActivity(Intent)
component: PeekActivity
extra = answer
nt)
(inte
PeekActivity
User presses back
button
DO YOU HAVE ANY
QUESTIONS?
THANK
YOU!
@
hend.alkittawi@utsa.edu
By Appointment
Online