Download Introduction to XML

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts
no text concepts found
Transcript
Manifest File, Intents, and
Multiple Activities
Manifest File
Manifest file
• AndroidManifest.xml
– required
– indicates application information
•
•
•
•
•
activities (within application tag)
Android SDK version
activities used within the app
services that will be used (Web, phone, etc.)
other aspects
Manifest file – Application tag
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="edu.csci153.MultActivities"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name="Screen2"
android:label="Second Screen" >
</activity>
</application>
Manifest File
• Exploring the <application> tag
– android:allowBackup=“true”
• allows app and data to be backed up with a system
restore
– android:icon=“@drawable/ic_launcher”
• Icon to display in the drawer
– android:label="@string/app_name“
• Name of the icon in the drawer
– <activity>
• child of <application>
Manifest File
• Exploring the <activity> tag
– android:name=“edu.csci153.MultActivities”
• Associated .java file
– android:label=“@string/app_name”
• Text that appears in title bar when this activity is
displayed
– <intent-filter>
• child of <activity>
Manifest File
• Exploring the <intent-filter> tag
– <action android:name="android.intent.action.MAIN" />
• Indicates this is the main entry point of the application
– <category
android:name="android.intent.category.LAUNCHER" />
• Indicates that the activity should be launched
– Without these lines, the application is started but no
activity is presented
• intent-filters ‘filter’ what an object can do – if there is no
action defined within the filter, they implicitly deny that the
action can be performed
Intents
Intent
• Class within Android
– android.content.Intent
– contains information regarding some action to be
performed
•
•
•
•
starting the phone dialer
starting an activity
opening a web page
other
Intent Example
• Starting the phone dialer (no special permission
needed)
Intent intent = new Intent(Intent.ACTION_DIAL, Uri.parse("tel:5551234"));
startActivity(intent);
Intent Example
• Opening a web page
– Permission in manifest file
• well over 100 different permissions
– access internet, bluetooth, vibrate phone, change wall paper, etc.
– http://developer.android.com/reference/android/Manifest.permission.html
• uses-permission tag (child of manifest tag)
<uses-permission android:name="android.permission.INTERNET" />
– Intent in corresponding java file
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(”http://www.google.com”));
startActivity(intent);
Intent Example
• Opening an Activity
Intent intent = new Intent(this, Screen2.class);
startActivity(intent);
• ‘this’ refers to the current activity
• Screen2.class refers to the class file associated with the
new activity to be opened
– implies a corresponding Sreen2.java file exists
– activity MUST be referenced in the manifest file
Intents
• Methods in the Intent class
– The intent class has many methods to put or
retrieve data
• useful when one Activity launches another
– put methods used by current Activity that will
instantiate another Activity
– get methods used by new instantiated Activity
Intents
• put… methods
– put… allows information to be passed from
current Activity to newly instantiated Activity
• putExtra – simple data types and arrays
» passing an integer
• i.putExtra(“Key1”, 17);
• Key1 – name of the integer to be passed
• 17 – contents of the integer to be passed
» passing a String
• i.putExtra(“Key2”, “Value”);
» passing an array
• i.putExtra(“Key3”, new int [] {1, 2, 3});
Intents
• get… methods
– get… allows information to be retrieved by the newly
instantiated Activity
• get…Extra – datatype must be known
– getting an integer
» getIntent().getIntExtra(“Key1”, 0);
» 2nd argument is default value in case Key1 does not exist, or
is not an integer
– getIntent().getStringExtra(“Key2”);
» retrieves value associated with Key2
» if no value, null is returned – no default option
– getting an array
» int [] z = getIntent().getIntArrayExtra(”Key3");
» if no value, null is returned – no default option
Activities
• Helpful hints about Activities
– Each Activity has:
• a corresponding .java file
• at least one corresponding .xml file (may have additional
menu file)
– Each Activity must be referenced in the manifest file
– The Activity class has a getIntent() method to retrieve
the intent that initiated it
– Each activity has a lifecycle
• http://developer.android.com/reference/android/app/Activity.html#ActivityLifecycle
Activity lifecycle methods
• Most important (signatures)
– protected void onCreate(Bundle savedInstanceState);
• called when created or phone rotated
– protected void onPause();
• called when still visible but focus is lost
– protected void onResume();
• called when focus is set AFTER being completely obscured
• When overriding methods, super class’ version
MUST be called
Example method
@Override
protected void onResume() {
super.onResume();
//Code goes here
//Clear fields, set focus, restart sensor
//listeners, etc.
}
Additional information
• Sending information back
– When one Activity finishes, activity can be sent
back to the Activity that started it as follows:
• In the original Activity, 2 methods are needed
– startActivityForResult (Intent data, int requestCode); must be
called to open Activity
» any non-negative integer can be used for requestCode
– onActivityResult(int requestCode, int resultCode, Intent data)
must be implemented
» Called when other Activity exits – just before onResume()
• requestCode is same code from above
• resultCode is sent from closing Activity
• data stores any data that was sent back
Additional information
• Continued from previous slide
– In the opened Activity, 1 method is needed
• setResult(int resultCode, Intent data) must be called
prior to finish()
– any integer can be used for resultCode
» Activity.RESULT_CANCELED
» Activity.RESULT_OK
» other
– data stores any data to be sent back
Sample Code
• In original Activity
public void openActivityAndWaitForResults() {
Intent i = new Intent(this, SecondActivity.class);
i.putExtra("StringValue", "Coming to you");
startActivityForResult(i, 1);
}
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
Toast.makeText(this, "From second activity: " + requestCode + " " + resultCode + " " +
data.getStringExtra("InfoBack"), Toast.LENGTH_LONG).show();
}
• In opened Activity
public void closeActivityAndSendInfoBack () {
Intent output = new Intent();
output.putExtra("InfoBack", "Back at you!");
setResult(7, output);
finish();
}