SlideShare a Scribd company logo
1 of 12
Download to read offline
© 2012 Marty Hall

Intents, Intent Filters,
and Invoking Activities:
Part III: Using Tabs
Originals of Slides and Source Code for Examples:
http://www.coreservlets.com/android-tutorial/
Customized Java EE Training: http://courses.coreservlets.com/
Java, JSF 2, PrimeFaces, Servlets, JSP, Ajax, jQuery, Spring, Hibernate, RESTful Web Services, Hadoop, Android.

Developed and taught by well-known author and developer. At public venues or onsite at your location.

© 2012 Marty Hall

For live Android training, please see courses
at http://courses.coreservlets.com/.
Taught by the author of Core Servlets and JSP, More
Servlets and JSP, and this Android tutorial. Available at
public venues, or customized versions can be held
on-site at your organization.
• Courses developed and taught by Marty Hall
– JSF 2, PrimeFaces, servlets/JSP, Ajax, jQuery, Android development, Java 6 or 7 programming, custom mix of topics
– Ajax courses can concentrate on 1EE Training: http://courses.coreservlets.com/several
Customized Java library (jQuery, Prototype/Scriptaculous, Ext-JS, Dojo, etc.) or survey

• Courses developed and taught by coreservlets.com experts (edited by Marty)

Java, JSF 2, PrimeFaces, Servlets, JSP, Ajax, jQuery, Spring,and RESTful Web Services Services, Hadoop, Android.
Hibernate, RESTful Web
– Spring, Hibernate/JPA, EJB3, GWT, Hadoop, SOAP-based
Contact hall@coreservlets.com for details
Developed and taught by well-known author and developer. At public venues or onsite at your location.
Topics in This Section
• Part I
– Invoking Activities by class name
– Defining dimensions in res/values
– Sending data via the “extras” Bundle

• Part II
– Invoking Activities with a URI
– Sending data via parameters in the URI

• Part III
– Invoking Activities with tabbed windows
– Defining two-image icons in res/drawable

5

© 2012 Marty Hall

Overview

Customized Java EE Training: http://courses.coreservlets.com/
Java, JSF 2, PrimeFaces, Servlets, JSP, Ajax, jQuery, Spring, Hibernate, RESTful Web Services, Hadoop, Android.

Developed and taught by well-known author and developer. At public venues or onsite at your location.
Summary of Options
• Invoke Activity by class name (Part I)
– Exactly one Activity can match
– New Activity must be in same project as original
– Can send data via an “extras” Bundle

• Invoke Activity by URI (Part II)
– More than one Activity could match
– New Activity need not be in the same project as original
– Can send data via URI parameters or “extras” Bundle

• Switch Activities via tabs (Part III)
– Can use class name or URI to specify Activity
– New Activity must be in same project as original
– Can send data via URI parameters or “extras” Bundle
7

© 2012 Marty Hall

Invoking Activities with
Tabbed Windows
Customized Java EE Training: http://courses.coreservlets.com/
Java, JSF 2, PrimeFaces, Servlets, JSP, Ajax, jQuery, Spring, Hibernate, RESTful Web Services, Hadoop, Android.

Developed and taught by well-known author and developer. At public venues or onsite at your location.
Summary
• Idea
– Make tabbed windows. Each tab invokes a different Activity,
or an Activity with different data.
• Can use either specific-class approach or URI approach
• Can send data either with an extras Bundle or in URI
• Tab window Activity and new Activities must be in same project
– Due to security reasons

• Syntax
– Java
• Extends TabActivity. Uses TabHost and TabSpec
– Details on next slide

– XML (AndroidManifest.xml)
• Same as shown earlier
9

Using TabActivity: Outline
public class SomeActivity extends TabActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Resources resources = getResources();
TabHost host = getTabHost();
Intent intent1= ...;
Drawable tabIcon =
resources.getDrawable(R.drawable.icon_name);
TabSpec tab1Spec =
host.newTabSpec("Tab One")
.setIndicator("Some Text", tabIcon)
.setContent(intent1);
host.addTab(tab1Spec);
// Repeat for other tabs
}
Note that the setter methods for TabSpec return the TabSpec so that you can do chained assignments.
}
Note also that there is no layout file when using this approach.
10
Defining Tab Icons
• Idea
– Although it is legal to call setIndicator(someString), the
resultant tab looks bad because of blank space at top. So,
more common to do setIndicator(someString, someIcon).
• You can also do setIndicator(someView) for fancy tabs

• Icon option 1
– Use a single image for the icon
• Same image used when the tab is or is not selected

• Icon option 2
– Use 2 similar but differently colored images for the icon
• One for when selected, one for when not

11

Option 1: A Single Image
• Pros
– Simpler
– Text color and background color of the tab already
change on selection, so not confusing if icon stays same.

• Cons
– Doesn’t look quite as good as with two images

• Approach
– Put image file in res/drawable/some_icon.png
– Refer to image with
• Drawable tabIcon =
resources.getDrawable(R.drawable.some_icon);

– Put icon in tab label with
12

• tabSpec.setIndicator("Some Text", tabIcon);
Option 2: Two Images
(Normal and Selected)
• Pros
– Looks better

• Cons
– More work

• Approach
– Put image files in
• res/drawable/some_icon_normal.png
and
• res/drawable/some_icon_selected.png

– Make XML file (next page)
• res/drawable/some_icon.xml

– Refer to XML file with
• Drawable tabIcon =
resources.getDrawable(R.drawable.some_icon);

– Put icon in tab label with
• tabSpec.setIndicator("Some Text", tabIcon);
13

XML Code for Dual-Image Icon
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://...">
<!-- When tab selected, use some_icon_selected.png -->
<item android:drawable="@drawable/some_icon_selected"
android:state_selected="true" />
<!-- When tab not selected, use some_icon_normal.png -->
<item android:drawable="@drawable/some_icon_normal" />
</selector>

The file names of the two images are arbitrary. They need not end in _selected and _normal, although
this can be a useful convention so that you know what the images are for.
14
© 2012 Marty Hall

Example:
Invoking Loan Calculator
(Each Tab Sends
Different Data)
Customized Java EE Training: http://courses.coreservlets.com/
Java, JSF 2, PrimeFaces, Servlets, JSP, Ajax, jQuery, Spring, Hibernate, RESTful Web Services, Hadoop, Android.

Developed and taught by well-known author and developer. At public venues or onsite at your location.

Example: Overview
• Initial Activity
– Has tabs that, when pressed, invoke the
loan calculator with different data
• Activity specified either with class name or URI
– But either way, initial Activity must be in same project as new one

• Data sent via either in extras Bundle or in URI

• Approach
– Intents and data created in same way as before
– Intent associated with tab via tabHost.setContent
– Put entry for LoanCalculatorActivity in manifest
• Same as shown previously

16
XML: Icon File
(res/drawable/calculator.xml)
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- Calculator images from http://www.fatcow.com/free-icons -->
<!-- When selected, use white -->
<item android:drawable="@drawable/calculator_white"
android:state_selected="true" />
<!-- When not selected, use black-->
<item android:drawable="@drawable/calculator_black" />
</selector>

17

XML: Manifest File
Action Declaration
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.coreservlets.intentfilter1"
android:versionCode="1"
android:versionName="1.0">
<uses-sdk android:minSdkVersion="8" />
<application android:icon="@drawable/icon"
android:label="@string/app_name">
... <!-- Declaration for IntentFilter1Activity shown earlier -->
<activity android:name=".LoanCalculatorActivity"
android:label="@string/loan_calculator_app_name">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<data android:scheme="loan" android:host="coreservlets.com" />
</intent-filter>
</activity>
...
</application>
Unchanged from previous examples.
</manifest>

18
Java
(TabbedActivity: Tab 1)
public class TabbedActivity extends TabActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Resources resources = getResources();
TabHost host = getTabHost();
Intent intent1 =
new Intent(this, LoanCalculatorActivity.class);
Bundle loanBundle1 =
LoanBundler.makeLoanInfoBundle(100000, 7.5, 120);
intent1.putExtras(loanBundle1);
Drawable tabIcon =
resources.getDrawable(R.drawable.calculator);
TabSpec tab1Spec = host.newTabSpec("Tab One")
.setIndicator("10 Year", tabIcon)
.setContent(intent1);
host.addTab(tab1Spec);

19

This first tab uses an Intent that specifies the Activity by class name.
It sends data via an extras Bundle. Reminder: there is no layout file when using TabActivity.

Java
(TabbedActivity: Tab 2)
Uri uriTwentyYear =
Uri.parse("loan://coreservlets.com/calc");
Intent intent2 =
new Intent(Intent.ACTION_VIEW, uriTwentyYear);
Bundle loanBundle2 =
LoanBundler.makeLoanInfoBundle(100000, 7.5, 240);
intent2.putExtras(loanBundle2);
tabIcon = resources.getDrawable(R.drawable.calculator);
TabSpec tab2Spec = host.newTabSpec("Tab Two")
.setIndicator("20 Year", tabIcon)
.setContent(intent2);
host.addTab(tab2Spec);

20

This second tab uses an Intent that specifies the Activity with a URI.
It sends data via an extras Bundle.
Java
(TabbedActivity: Tab 3)
String baseAddress = "loan://coreservlets.com/calc";
String address =
String.format("%s?%s&%s&%s",
baseAddress,
"loanAmount=100000",
"annualInterestRateInPercent=7.5",
"loanPeriodInMonths=360");
Uri uriThirtyYear = Uri.parse(address);
Intent intent3 =
new Intent(Intent.ACTION_VIEW, uriThirtyYear);
tabIcon = resources.getDrawable(R.drawable.calculator);
TabSpec tab3Spec = host.newTabSpec("Tab Three")
.setIndicator("30 Year", tabIcon)
.setContent(intent3);
host.addTab(tab3Spec);

21

This second tab uses an Intent that specifies the Activity with a URI.
It sends data via parameters embedded in the URI.

Example: Results

22
© 2012 Marty Hall

Wrap-Up
Customized Java EE Training: http://courses.coreservlets.com/
Java, JSF 2, PrimeFaces, Servlets, JSP, Ajax, jQuery, Spring, Hibernate, RESTful Web Services, Hadoop, Android.

Developed and taught by well-known author and developer. At public venues or onsite at your location.

Summary
• Java (extends TabActivity)
TabHost host = getTabHost();
Intent intent1= ...; // Refers to Activity in same project
Drawable tabIcon = resources.getDrawable(R.drawable.some_icon);
TabSpec tab1Spec = host.newTabSpec("Tab One")
.setIndicator("Some Text", tabIcon)
.setContent(intent1);
host.addTab(tab1Spec);
// Repeat for other tabs

• Icon (res/drawable/some_icon.xml)

24

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://...">
<item android:drawable="@drawable/some_icon_selected"
android:state_selected="true" />
<item android:drawable="@drawable/some_icon_normal" />
</selector>
© 2012 Marty Hall

Questions?
JSF 2, PrimeFaces, Java 7, Ajax, jQuery, Hadoop, RESTful Web Services, Android, Spring, Hibernate, Servlets, JSP, GWT, and other Java EE training.

Customized Java EE Training: http://courses.coreservlets.com/
Java, JSF 2, PrimeFaces, Servlets, JSP, Ajax, jQuery, Spring, Hibernate, RESTful Web Services, Hadoop, Android.

Developed and taught by well-known author and developer. At public venues or onsite at your location.

More Related Content

What's hot

Staying Sane with Drupal NEPHP
Staying Sane with Drupal NEPHPStaying Sane with Drupal NEPHP
Staying Sane with Drupal NEPHPOscar Merida
 
Advanced moduledevelopment d6_slideshare
Advanced moduledevelopment d6_slideshareAdvanced moduledevelopment d6_slideshare
Advanced moduledevelopment d6_slideshareOpevel
 
[2015/2016] Local data storage for web-based mobile apps
[2015/2016] Local data storage for web-based mobile apps[2015/2016] Local data storage for web-based mobile apps
[2015/2016] Local data storage for web-based mobile appsIvano Malavolta
 
Creating Modular Test-Driven SPAs with Spring and AngularJS
Creating Modular Test-Driven SPAs with Spring and AngularJSCreating Modular Test-Driven SPAs with Spring and AngularJS
Creating Modular Test-Driven SPAs with Spring and AngularJSGunnar Hillert
 
Advanced #6 clean architecture
Advanced #6  clean architectureAdvanced #6  clean architecture
Advanced #6 clean architectureVitali Pekelis
 
The Grid the Brad and the Ugly: Using Grids to Improve Your Applications
The Grid the Brad and the Ugly: Using Grids to Improve Your ApplicationsThe Grid the Brad and the Ugly: Using Grids to Improve Your Applications
The Grid the Brad and the Ugly: Using Grids to Improve Your Applicationsbalassaitis
 
Customizing the Document Library
Customizing the Document LibraryCustomizing the Document Library
Customizing the Document LibraryAlfresco Software
 
Working with Hive Analytics
Working with Hive AnalyticsWorking with Hive Analytics
Working with Hive AnalyticsManish Chopra
 
Advanced SharePoint 2010 and 2013 Web Part Development by Rob Windsor - SPTec...
Advanced SharePoint 2010 and 2013 Web Part Development by Rob Windsor - SPTec...Advanced SharePoint 2010 and 2013 Web Part Development by Rob Windsor - SPTec...
Advanced SharePoint 2010 and 2013 Web Part Development by Rob Windsor - SPTec...SPTechCon
 
Mastering the Sling Rewriter
Mastering the Sling RewriterMastering the Sling Rewriter
Mastering the Sling RewriterJustin Edelson
 
04 integrate entityframework
04 integrate entityframework04 integrate entityframework
04 integrate entityframeworkErhwen Kuo
 
Hibernate ppt
Hibernate pptHibernate ppt
Hibernate pptAneega
 
Core Data with Swift 3.0
Core Data with Swift 3.0Core Data with Swift 3.0
Core Data with Swift 3.0Korhan Bircan
 
What is WebDAV - uploaded by Murali Krishna Nookella
What is WebDAV - uploaded by Murali Krishna NookellaWhat is WebDAV - uploaded by Murali Krishna Nookella
What is WebDAV - uploaded by Murali Krishna Nookellamuralikrishnanookella
 
Java EE revisits design patterns
Java EE revisits design patternsJava EE revisits design patterns
Java EE revisits design patternsAlex Theedom
 

What's hot (20)

Staying Sane with Drupal NEPHP
Staying Sane with Drupal NEPHPStaying Sane with Drupal NEPHP
Staying Sane with Drupal NEPHP
 
Advanced moduledevelopment d6_slideshare
Advanced moduledevelopment d6_slideshareAdvanced moduledevelopment d6_slideshare
Advanced moduledevelopment d6_slideshare
 
[2015/2016] Local data storage for web-based mobile apps
[2015/2016] Local data storage for web-based mobile apps[2015/2016] Local data storage for web-based mobile apps
[2015/2016] Local data storage for web-based mobile apps
 
Creating Modular Test-Driven SPAs with Spring and AngularJS
Creating Modular Test-Driven SPAs with Spring and AngularJSCreating Modular Test-Driven SPAs with Spring and AngularJS
Creating Modular Test-Driven SPAs with Spring and AngularJS
 
Advanced #6 clean architecture
Advanced #6  clean architectureAdvanced #6  clean architecture
Advanced #6 clean architecture
 
The Spring Update
The Spring UpdateThe Spring Update
The Spring Update
 
Actionview
ActionviewActionview
Actionview
 
The Grid the Brad and the Ugly: Using Grids to Improve Your Applications
The Grid the Brad and the Ugly: Using Grids to Improve Your ApplicationsThe Grid the Brad and the Ugly: Using Grids to Improve Your Applications
The Grid the Brad and the Ugly: Using Grids to Improve Your Applications
 
Customizing the Document Library
Customizing the Document LibraryCustomizing the Document Library
Customizing the Document Library
 
Lift Framework
Lift FrameworkLift Framework
Lift Framework
 
Working with Hive Analytics
Working with Hive AnalyticsWorking with Hive Analytics
Working with Hive Analytics
 
Advanced SharePoint 2010 and 2013 Web Part Development by Rob Windsor - SPTec...
Advanced SharePoint 2010 and 2013 Web Part Development by Rob Windsor - SPTec...Advanced SharePoint 2010 and 2013 Web Part Development by Rob Windsor - SPTec...
Advanced SharePoint 2010 and 2013 Web Part Development by Rob Windsor - SPTec...
 
Migrate to Drupal 8
Migrate to Drupal 8Migrate to Drupal 8
Migrate to Drupal 8
 
Mastering the Sling Rewriter
Mastering the Sling RewriterMastering the Sling Rewriter
Mastering the Sling Rewriter
 
04 integrate entityframework
04 integrate entityframework04 integrate entityframework
04 integrate entityframework
 
Hibernate ppt
Hibernate pptHibernate ppt
Hibernate ppt
 
jQuery
jQueryjQuery
jQuery
 
Core Data with Swift 3.0
Core Data with Swift 3.0Core Data with Swift 3.0
Core Data with Swift 3.0
 
What is WebDAV - uploaded by Murali Krishna Nookella
What is WebDAV - uploaded by Murali Krishna NookellaWhat is WebDAV - uploaded by Murali Krishna Nookella
What is WebDAV - uploaded by Murali Krishna Nookella
 
Java EE revisits design patterns
Java EE revisits design patternsJava EE revisits design patterns
Java EE revisits design patterns
 

Viewers also liked

Dj tïesto
Dj tïestoDj tïesto
Dj tïestofre792
 
Dj tïesto
Dj tïestoDj tïesto
Dj tïestofre792
 
10 consulting notes_forco-pa_analysts
10 consulting notes_forco-pa_analysts10 consulting notes_forco-pa_analysts
10 consulting notes_forco-pa_analystsSreenivas Kumar
 
استخدام الرسوم المتحركة الناطقة فى تنمية مهارتي الاستماع والتحدث لدى تلاميذ ا...
استخدام الرسوم المتحركة الناطقة فى تنمية مهارتي الاستماع والتحدث لدى تلاميذ ا...استخدام الرسوم المتحركة الناطقة فى تنمية مهارتي الاستماع والتحدث لدى تلاميذ ا...
استخدام الرسوم المتحركة الناطقة فى تنمية مهارتي الاستماع والتحدث لدى تلاميذ ا...eman3460
 

Viewers also liked (7)

License
LicenseLicense
License
 
D math graph
D math graphD math graph
D math graph
 
Dj tïesto
Dj tïestoDj tïesto
Dj tïesto
 
Dj tïesto
Dj tïestoDj tïesto
Dj tïesto
 
10 consulting notes_forco-pa_analysts
10 consulting notes_forco-pa_analysts10 consulting notes_forco-pa_analysts
10 consulting notes_forco-pa_analysts
 
استخدام الرسوم المتحركة الناطقة فى تنمية مهارتي الاستماع والتحدث لدى تلاميذ ا...
استخدام الرسوم المتحركة الناطقة فى تنمية مهارتي الاستماع والتحدث لدى تلاميذ ا...استخدام الرسوم المتحركة الناطقة فى تنمية مهارتي الاستماع والتحدث لدى تلاميذ ا...
استخدام الرسوم المتحركة الناطقة فى تنمية مهارتي الاستماع والتحدث لدى تلاميذ ا...
 
I order1
I order1I order1
I order1
 

Similar to Using Tabs to Invoke Activities with Different Data

Lec005 android start_program
Lec005 android start_programLec005 android start_program
Lec005 android start_programEyad Almasri
 
Hyperproductive JSF 2.0 @ JavaOne Brazil 2010
Hyperproductive JSF 2.0 @ JavaOne Brazil 2010Hyperproductive JSF 2.0 @ JavaOne Brazil 2010
Hyperproductive JSF 2.0 @ JavaOne Brazil 2010Arun Gupta
 
Writing HTML5 Web Apps using Backbone.js and GAE
Writing HTML5 Web Apps using Backbone.js and GAEWriting HTML5 Web Apps using Backbone.js and GAE
Writing HTML5 Web Apps using Backbone.js and GAERon Reiter
 
JavaServer Faces 2.0 - JavaOne India 2011
JavaServer Faces 2.0 - JavaOne India 2011JavaServer Faces 2.0 - JavaOne India 2011
JavaServer Faces 2.0 - JavaOne India 2011Arun Gupta
 
Ajax Tags Advanced
Ajax Tags AdvancedAjax Tags Advanced
Ajax Tags AdvancedAkramWaseem
 
Web applications with Catalyst
Web applications with CatalystWeb applications with Catalyst
Web applications with Catalystsvilen.ivanov
 
The Magic Revealed: Four Real-World Examples of Using the Client Object Model...
The Magic Revealed: Four Real-World Examples of Using the Client Object Model...The Magic Revealed: Four Real-World Examples of Using the Client Object Model...
The Magic Revealed: Four Real-World Examples of Using the Client Object Model...SPTechCon
 
Prototyping applications with heroku and elasticsearch
 Prototyping applications with heroku and elasticsearch Prototyping applications with heroku and elasticsearch
Prototyping applications with heroku and elasticsearchprotofy
 
WebNet Conference 2012 - Designing complex applications using html5 and knock...
WebNet Conference 2012 - Designing complex applications using html5 and knock...WebNet Conference 2012 - Designing complex applications using html5 and knock...
WebNet Conference 2012 - Designing complex applications using html5 and knock...Fabio Franzini
 
Microsoft PowerPoint - &lt;b>jQuery&lt;/b>-3-UI.pptx
Microsoft PowerPoint - &lt;b>jQuery&lt;/b>-3-UI.pptxMicrosoft PowerPoint - &lt;b>jQuery&lt;/b>-3-UI.pptx
Microsoft PowerPoint - &lt;b>jQuery&lt;/b>-3-UI.pptxtutorialsruby
 
Introduction to jQuery
Introduction to jQueryIntroduction to jQuery
Introduction to jQueryAlek Davis
 

Similar to Using Tabs to Invoke Activities with Different Data (20)

Lec005 android start_program
Lec005 android start_programLec005 android start_program
Lec005 android start_program
 
Android layouts
Android layoutsAndroid layouts
Android layouts
 
Json generation
Json generationJson generation
Json generation
 
Hyperproductive JSF 2.0 @ JavaOne Brazil 2010
Hyperproductive JSF 2.0 @ JavaOne Brazil 2010Hyperproductive JSF 2.0 @ JavaOne Brazil 2010
Hyperproductive JSF 2.0 @ JavaOne Brazil 2010
 
Writing HTML5 Web Apps using Backbone.js and GAE
Writing HTML5 Web Apps using Backbone.js and GAEWriting HTML5 Web Apps using Backbone.js and GAE
Writing HTML5 Web Apps using Backbone.js and GAE
 
JavaServer Faces 2.0 - JavaOne India 2011
JavaServer Faces 2.0 - JavaOne India 2011JavaServer Faces 2.0 - JavaOne India 2011
JavaServer Faces 2.0 - JavaOne India 2011
 
Ajax Tags Advanced
Ajax Tags AdvancedAjax Tags Advanced
Ajax Tags Advanced
 
Web applications with Catalyst
Web applications with CatalystWeb applications with Catalyst
Web applications with Catalyst
 
The Magic Revealed: Four Real-World Examples of Using the Client Object Model...
The Magic Revealed: Four Real-World Examples of Using the Client Object Model...The Magic Revealed: Four Real-World Examples of Using the Client Object Model...
The Magic Revealed: Four Real-World Examples of Using the Client Object Model...
 
Web works hol
Web works holWeb works hol
Web works hol
 
Prototyping applications with heroku and elasticsearch
 Prototyping applications with heroku and elasticsearch Prototyping applications with heroku and elasticsearch
Prototyping applications with heroku and elasticsearch
 
Intro lift
Intro liftIntro lift
Intro lift
 
WebNet Conference 2012 - Designing complex applications using html5 and knock...
WebNet Conference 2012 - Designing complex applications using html5 and knock...WebNet Conference 2012 - Designing complex applications using html5 and knock...
WebNet Conference 2012 - Designing complex applications using html5 and knock...
 
jQuery-3-UI
jQuery-3-UIjQuery-3-UI
jQuery-3-UI
 
jQuery-3-UI
jQuery-3-UIjQuery-3-UI
jQuery-3-UI
 
JQuery-Tutorial
 JQuery-Tutorial JQuery-Tutorial
JQuery-Tutorial
 
Microsoft PowerPoint - &lt;b>jQuery&lt;/b>-3-UI.pptx
Microsoft PowerPoint - &lt;b>jQuery&lt;/b>-3-UI.pptxMicrosoft PowerPoint - &lt;b>jQuery&lt;/b>-3-UI.pptx
Microsoft PowerPoint - &lt;b>jQuery&lt;/b>-3-UI.pptx
 
Introduction to jQuery
Introduction to jQueryIntroduction to jQuery
Introduction to jQuery
 
Intro to appcelerator
Intro to appceleratorIntro to appcelerator
Intro to appcelerator
 
React native
React nativeReact native
React native
 

Recently uploaded

The Most Excellent Way | 1 Corinthians 13
The Most Excellent Way | 1 Corinthians 13The Most Excellent Way | 1 Corinthians 13
The Most Excellent Way | 1 Corinthians 13Steve Thomason
 
Solving Puzzles Benefits Everyone (English).pptx
Solving Puzzles Benefits Everyone (English).pptxSolving Puzzles Benefits Everyone (English).pptx
Solving Puzzles Benefits Everyone (English).pptxOH TEIK BIN
 
Industrial Policy - 1948, 1956, 1973, 1977, 1980, 1991
Industrial Policy - 1948, 1956, 1973, 1977, 1980, 1991Industrial Policy - 1948, 1956, 1973, 1977, 1980, 1991
Industrial Policy - 1948, 1956, 1973, 1977, 1980, 1991RKavithamani
 
Separation of Lanthanides/ Lanthanides and Actinides
Separation of Lanthanides/ Lanthanides and ActinidesSeparation of Lanthanides/ Lanthanides and Actinides
Separation of Lanthanides/ Lanthanides and ActinidesFatimaKhan178732
 
18-04-UA_REPORT_MEDIALITERAСY_INDEX-DM_23-1-final-eng.pdf
18-04-UA_REPORT_MEDIALITERAСY_INDEX-DM_23-1-final-eng.pdf18-04-UA_REPORT_MEDIALITERAСY_INDEX-DM_23-1-final-eng.pdf
18-04-UA_REPORT_MEDIALITERAСY_INDEX-DM_23-1-final-eng.pdfssuser54595a
 
Science 7 - LAND and SEA BREEZE and its Characteristics
Science 7 - LAND and SEA BREEZE and its CharacteristicsScience 7 - LAND and SEA BREEZE and its Characteristics
Science 7 - LAND and SEA BREEZE and its CharacteristicsKarinaGenton
 
POINT- BIOCHEMISTRY SEM 2 ENZYMES UNIT 5.pptx
POINT- BIOCHEMISTRY SEM 2 ENZYMES UNIT 5.pptxPOINT- BIOCHEMISTRY SEM 2 ENZYMES UNIT 5.pptx
POINT- BIOCHEMISTRY SEM 2 ENZYMES UNIT 5.pptxSayali Powar
 
Presentation by Andreas Schleicher Tackling the School Absenteeism Crisis 30 ...
Presentation by Andreas Schleicher Tackling the School Absenteeism Crisis 30 ...Presentation by Andreas Schleicher Tackling the School Absenteeism Crisis 30 ...
Presentation by Andreas Schleicher Tackling the School Absenteeism Crisis 30 ...EduSkills OECD
 
Arihant handbook biology for class 11 .pdf
Arihant handbook biology for class 11 .pdfArihant handbook biology for class 11 .pdf
Arihant handbook biology for class 11 .pdfchloefrazer622
 
Micromeritics - Fundamental and Derived Properties of Powders
Micromeritics - Fundamental and Derived Properties of PowdersMicromeritics - Fundamental and Derived Properties of Powders
Micromeritics - Fundamental and Derived Properties of PowdersChitralekhaTherkar
 
The basics of sentences session 2pptx copy.pptx
The basics of sentences session 2pptx copy.pptxThe basics of sentences session 2pptx copy.pptx
The basics of sentences session 2pptx copy.pptxheathfieldcps1
 
CARE OF CHILD IN INCUBATOR..........pptx
CARE OF CHILD IN INCUBATOR..........pptxCARE OF CHILD IN INCUBATOR..........pptx
CARE OF CHILD IN INCUBATOR..........pptxGaneshChakor2
 
Alper Gobel In Media Res Media Component
Alper Gobel In Media Res Media ComponentAlper Gobel In Media Res Media Component
Alper Gobel In Media Res Media ComponentInMediaRes1
 
MENTAL STATUS EXAMINATION format.docx
MENTAL     STATUS EXAMINATION format.docxMENTAL     STATUS EXAMINATION format.docx
MENTAL STATUS EXAMINATION format.docxPoojaSen20
 
Paris 2024 Olympic Geographies - an activity
Paris 2024 Olympic Geographies - an activityParis 2024 Olympic Geographies - an activity
Paris 2024 Olympic Geographies - an activityGeoBlogs
 
Grant Readiness 101 TechSoup and Remy Consulting
Grant Readiness 101 TechSoup and Remy ConsultingGrant Readiness 101 TechSoup and Remy Consulting
Grant Readiness 101 TechSoup and Remy ConsultingTechSoup
 
Concept of Vouching. B.Com(Hons) /B.Compdf
Concept of Vouching. B.Com(Hons) /B.CompdfConcept of Vouching. B.Com(Hons) /B.Compdf
Concept of Vouching. B.Com(Hons) /B.CompdfUmakantAnnand
 
_Math 4-Q4 Week 5.pptx Steps in Collecting Data
_Math 4-Q4 Week 5.pptx Steps in Collecting Data_Math 4-Q4 Week 5.pptx Steps in Collecting Data
_Math 4-Q4 Week 5.pptx Steps in Collecting DataJhengPantaleon
 

Recently uploaded (20)

The Most Excellent Way | 1 Corinthians 13
The Most Excellent Way | 1 Corinthians 13The Most Excellent Way | 1 Corinthians 13
The Most Excellent Way | 1 Corinthians 13
 
Solving Puzzles Benefits Everyone (English).pptx
Solving Puzzles Benefits Everyone (English).pptxSolving Puzzles Benefits Everyone (English).pptx
Solving Puzzles Benefits Everyone (English).pptx
 
Industrial Policy - 1948, 1956, 1973, 1977, 1980, 1991
Industrial Policy - 1948, 1956, 1973, 1977, 1980, 1991Industrial Policy - 1948, 1956, 1973, 1977, 1980, 1991
Industrial Policy - 1948, 1956, 1973, 1977, 1980, 1991
 
Separation of Lanthanides/ Lanthanides and Actinides
Separation of Lanthanides/ Lanthanides and ActinidesSeparation of Lanthanides/ Lanthanides and Actinides
Separation of Lanthanides/ Lanthanides and Actinides
 
18-04-UA_REPORT_MEDIALITERAСY_INDEX-DM_23-1-final-eng.pdf
18-04-UA_REPORT_MEDIALITERAСY_INDEX-DM_23-1-final-eng.pdf18-04-UA_REPORT_MEDIALITERAСY_INDEX-DM_23-1-final-eng.pdf
18-04-UA_REPORT_MEDIALITERAСY_INDEX-DM_23-1-final-eng.pdf
 
Science 7 - LAND and SEA BREEZE and its Characteristics
Science 7 - LAND and SEA BREEZE and its CharacteristicsScience 7 - LAND and SEA BREEZE and its Characteristics
Science 7 - LAND and SEA BREEZE and its Characteristics
 
POINT- BIOCHEMISTRY SEM 2 ENZYMES UNIT 5.pptx
POINT- BIOCHEMISTRY SEM 2 ENZYMES UNIT 5.pptxPOINT- BIOCHEMISTRY SEM 2 ENZYMES UNIT 5.pptx
POINT- BIOCHEMISTRY SEM 2 ENZYMES UNIT 5.pptx
 
Presentation by Andreas Schleicher Tackling the School Absenteeism Crisis 30 ...
Presentation by Andreas Schleicher Tackling the School Absenteeism Crisis 30 ...Presentation by Andreas Schleicher Tackling the School Absenteeism Crisis 30 ...
Presentation by Andreas Schleicher Tackling the School Absenteeism Crisis 30 ...
 
Arihant handbook biology for class 11 .pdf
Arihant handbook biology for class 11 .pdfArihant handbook biology for class 11 .pdf
Arihant handbook biology for class 11 .pdf
 
Micromeritics - Fundamental and Derived Properties of Powders
Micromeritics - Fundamental and Derived Properties of PowdersMicromeritics - Fundamental and Derived Properties of Powders
Micromeritics - Fundamental and Derived Properties of Powders
 
Staff of Color (SOC) Retention Efforts DDSD
Staff of Color (SOC) Retention Efforts DDSDStaff of Color (SOC) Retention Efforts DDSD
Staff of Color (SOC) Retention Efforts DDSD
 
The basics of sentences session 2pptx copy.pptx
The basics of sentences session 2pptx copy.pptxThe basics of sentences session 2pptx copy.pptx
The basics of sentences session 2pptx copy.pptx
 
CARE OF CHILD IN INCUBATOR..........pptx
CARE OF CHILD IN INCUBATOR..........pptxCARE OF CHILD IN INCUBATOR..........pptx
CARE OF CHILD IN INCUBATOR..........pptx
 
Alper Gobel In Media Res Media Component
Alper Gobel In Media Res Media ComponentAlper Gobel In Media Res Media Component
Alper Gobel In Media Res Media Component
 
MENTAL STATUS EXAMINATION format.docx
MENTAL     STATUS EXAMINATION format.docxMENTAL     STATUS EXAMINATION format.docx
MENTAL STATUS EXAMINATION format.docx
 
Paris 2024 Olympic Geographies - an activity
Paris 2024 Olympic Geographies - an activityParis 2024 Olympic Geographies - an activity
Paris 2024 Olympic Geographies - an activity
 
Grant Readiness 101 TechSoup and Remy Consulting
Grant Readiness 101 TechSoup and Remy ConsultingGrant Readiness 101 TechSoup and Remy Consulting
Grant Readiness 101 TechSoup and Remy Consulting
 
Concept of Vouching. B.Com(Hons) /B.Compdf
Concept of Vouching. B.Com(Hons) /B.CompdfConcept of Vouching. B.Com(Hons) /B.Compdf
Concept of Vouching. B.Com(Hons) /B.Compdf
 
_Math 4-Q4 Week 5.pptx Steps in Collecting Data
_Math 4-Q4 Week 5.pptx Steps in Collecting Data_Math 4-Q4 Week 5.pptx Steps in Collecting Data
_Math 4-Q4 Week 5.pptx Steps in Collecting Data
 
Model Call Girl in Bikash Puri Delhi reach out to us at 🔝9953056974🔝
Model Call Girl in Bikash Puri  Delhi reach out to us at 🔝9953056974🔝Model Call Girl in Bikash Puri  Delhi reach out to us at 🔝9953056974🔝
Model Call Girl in Bikash Puri Delhi reach out to us at 🔝9953056974🔝
 

Using Tabs to Invoke Activities with Different Data

  • 1. © 2012 Marty Hall Intents, Intent Filters, and Invoking Activities: Part III: Using Tabs Originals of Slides and Source Code for Examples: http://www.coreservlets.com/android-tutorial/ Customized Java EE Training: http://courses.coreservlets.com/ Java, JSF 2, PrimeFaces, Servlets, JSP, Ajax, jQuery, Spring, Hibernate, RESTful Web Services, Hadoop, Android. Developed and taught by well-known author and developer. At public venues or onsite at your location. © 2012 Marty Hall For live Android training, please see courses at http://courses.coreservlets.com/. Taught by the author of Core Servlets and JSP, More Servlets and JSP, and this Android tutorial. Available at public venues, or customized versions can be held on-site at your organization. • Courses developed and taught by Marty Hall – JSF 2, PrimeFaces, servlets/JSP, Ajax, jQuery, Android development, Java 6 or 7 programming, custom mix of topics – Ajax courses can concentrate on 1EE Training: http://courses.coreservlets.com/several Customized Java library (jQuery, Prototype/Scriptaculous, Ext-JS, Dojo, etc.) or survey • Courses developed and taught by coreservlets.com experts (edited by Marty) Java, JSF 2, PrimeFaces, Servlets, JSP, Ajax, jQuery, Spring,and RESTful Web Services Services, Hadoop, Android. Hibernate, RESTful Web – Spring, Hibernate/JPA, EJB3, GWT, Hadoop, SOAP-based Contact hall@coreservlets.com for details Developed and taught by well-known author and developer. At public venues or onsite at your location.
  • 2. Topics in This Section • Part I – Invoking Activities by class name – Defining dimensions in res/values – Sending data via the “extras” Bundle • Part II – Invoking Activities with a URI – Sending data via parameters in the URI • Part III – Invoking Activities with tabbed windows – Defining two-image icons in res/drawable 5 © 2012 Marty Hall Overview Customized Java EE Training: http://courses.coreservlets.com/ Java, JSF 2, PrimeFaces, Servlets, JSP, Ajax, jQuery, Spring, Hibernate, RESTful Web Services, Hadoop, Android. Developed and taught by well-known author and developer. At public venues or onsite at your location.
  • 3. Summary of Options • Invoke Activity by class name (Part I) – Exactly one Activity can match – New Activity must be in same project as original – Can send data via an “extras” Bundle • Invoke Activity by URI (Part II) – More than one Activity could match – New Activity need not be in the same project as original – Can send data via URI parameters or “extras” Bundle • Switch Activities via tabs (Part III) – Can use class name or URI to specify Activity – New Activity must be in same project as original – Can send data via URI parameters or “extras” Bundle 7 © 2012 Marty Hall Invoking Activities with Tabbed Windows Customized Java EE Training: http://courses.coreservlets.com/ Java, JSF 2, PrimeFaces, Servlets, JSP, Ajax, jQuery, Spring, Hibernate, RESTful Web Services, Hadoop, Android. Developed and taught by well-known author and developer. At public venues or onsite at your location.
  • 4. Summary • Idea – Make tabbed windows. Each tab invokes a different Activity, or an Activity with different data. • Can use either specific-class approach or URI approach • Can send data either with an extras Bundle or in URI • Tab window Activity and new Activities must be in same project – Due to security reasons • Syntax – Java • Extends TabActivity. Uses TabHost and TabSpec – Details on next slide – XML (AndroidManifest.xml) • Same as shown earlier 9 Using TabActivity: Outline public class SomeActivity extends TabActivity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Resources resources = getResources(); TabHost host = getTabHost(); Intent intent1= ...; Drawable tabIcon = resources.getDrawable(R.drawable.icon_name); TabSpec tab1Spec = host.newTabSpec("Tab One") .setIndicator("Some Text", tabIcon) .setContent(intent1); host.addTab(tab1Spec); // Repeat for other tabs } Note that the setter methods for TabSpec return the TabSpec so that you can do chained assignments. } Note also that there is no layout file when using this approach. 10
  • 5. Defining Tab Icons • Idea – Although it is legal to call setIndicator(someString), the resultant tab looks bad because of blank space at top. So, more common to do setIndicator(someString, someIcon). • You can also do setIndicator(someView) for fancy tabs • Icon option 1 – Use a single image for the icon • Same image used when the tab is or is not selected • Icon option 2 – Use 2 similar but differently colored images for the icon • One for when selected, one for when not 11 Option 1: A Single Image • Pros – Simpler – Text color and background color of the tab already change on selection, so not confusing if icon stays same. • Cons – Doesn’t look quite as good as with two images • Approach – Put image file in res/drawable/some_icon.png – Refer to image with • Drawable tabIcon = resources.getDrawable(R.drawable.some_icon); – Put icon in tab label with 12 • tabSpec.setIndicator("Some Text", tabIcon);
  • 6. Option 2: Two Images (Normal and Selected) • Pros – Looks better • Cons – More work • Approach – Put image files in • res/drawable/some_icon_normal.png and • res/drawable/some_icon_selected.png – Make XML file (next page) • res/drawable/some_icon.xml – Refer to XML file with • Drawable tabIcon = resources.getDrawable(R.drawable.some_icon); – Put icon in tab label with • tabSpec.setIndicator("Some Text", tabIcon); 13 XML Code for Dual-Image Icon <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://..."> <!-- When tab selected, use some_icon_selected.png --> <item android:drawable="@drawable/some_icon_selected" android:state_selected="true" /> <!-- When tab not selected, use some_icon_normal.png --> <item android:drawable="@drawable/some_icon_normal" /> </selector> The file names of the two images are arbitrary. They need not end in _selected and _normal, although this can be a useful convention so that you know what the images are for. 14
  • 7. © 2012 Marty Hall Example: Invoking Loan Calculator (Each Tab Sends Different Data) Customized Java EE Training: http://courses.coreservlets.com/ Java, JSF 2, PrimeFaces, Servlets, JSP, Ajax, jQuery, Spring, Hibernate, RESTful Web Services, Hadoop, Android. Developed and taught by well-known author and developer. At public venues or onsite at your location. Example: Overview • Initial Activity – Has tabs that, when pressed, invoke the loan calculator with different data • Activity specified either with class name or URI – But either way, initial Activity must be in same project as new one • Data sent via either in extras Bundle or in URI • Approach – Intents and data created in same way as before – Intent associated with tab via tabHost.setContent – Put entry for LoanCalculatorActivity in manifest • Same as shown previously 16
  • 8. XML: Icon File (res/drawable/calculator.xml) <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <!-- Calculator images from http://www.fatcow.com/free-icons --> <!-- When selected, use white --> <item android:drawable="@drawable/calculator_white" android:state_selected="true" /> <!-- When not selected, use black--> <item android:drawable="@drawable/calculator_black" /> </selector> 17 XML: Manifest File Action Declaration <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.coreservlets.intentfilter1" android:versionCode="1" android:versionName="1.0"> <uses-sdk android:minSdkVersion="8" /> <application android:icon="@drawable/icon" android:label="@string/app_name"> ... <!-- Declaration for IntentFilter1Activity shown earlier --> <activity android:name=".LoanCalculatorActivity" android:label="@string/loan_calculator_app_name"> <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <data android:scheme="loan" android:host="coreservlets.com" /> </intent-filter> </activity> ... </application> Unchanged from previous examples. </manifest> 18
  • 9. Java (TabbedActivity: Tab 1) public class TabbedActivity extends TabActivity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Resources resources = getResources(); TabHost host = getTabHost(); Intent intent1 = new Intent(this, LoanCalculatorActivity.class); Bundle loanBundle1 = LoanBundler.makeLoanInfoBundle(100000, 7.5, 120); intent1.putExtras(loanBundle1); Drawable tabIcon = resources.getDrawable(R.drawable.calculator); TabSpec tab1Spec = host.newTabSpec("Tab One") .setIndicator("10 Year", tabIcon) .setContent(intent1); host.addTab(tab1Spec); 19 This first tab uses an Intent that specifies the Activity by class name. It sends data via an extras Bundle. Reminder: there is no layout file when using TabActivity. Java (TabbedActivity: Tab 2) Uri uriTwentyYear = Uri.parse("loan://coreservlets.com/calc"); Intent intent2 = new Intent(Intent.ACTION_VIEW, uriTwentyYear); Bundle loanBundle2 = LoanBundler.makeLoanInfoBundle(100000, 7.5, 240); intent2.putExtras(loanBundle2); tabIcon = resources.getDrawable(R.drawable.calculator); TabSpec tab2Spec = host.newTabSpec("Tab Two") .setIndicator("20 Year", tabIcon) .setContent(intent2); host.addTab(tab2Spec); 20 This second tab uses an Intent that specifies the Activity with a URI. It sends data via an extras Bundle.
  • 10. Java (TabbedActivity: Tab 3) String baseAddress = "loan://coreservlets.com/calc"; String address = String.format("%s?%s&%s&%s", baseAddress, "loanAmount=100000", "annualInterestRateInPercent=7.5", "loanPeriodInMonths=360"); Uri uriThirtyYear = Uri.parse(address); Intent intent3 = new Intent(Intent.ACTION_VIEW, uriThirtyYear); tabIcon = resources.getDrawable(R.drawable.calculator); TabSpec tab3Spec = host.newTabSpec("Tab Three") .setIndicator("30 Year", tabIcon) .setContent(intent3); host.addTab(tab3Spec); 21 This second tab uses an Intent that specifies the Activity with a URI. It sends data via parameters embedded in the URI. Example: Results 22
  • 11. © 2012 Marty Hall Wrap-Up Customized Java EE Training: http://courses.coreservlets.com/ Java, JSF 2, PrimeFaces, Servlets, JSP, Ajax, jQuery, Spring, Hibernate, RESTful Web Services, Hadoop, Android. Developed and taught by well-known author and developer. At public venues or onsite at your location. Summary • Java (extends TabActivity) TabHost host = getTabHost(); Intent intent1= ...; // Refers to Activity in same project Drawable tabIcon = resources.getDrawable(R.drawable.some_icon); TabSpec tab1Spec = host.newTabSpec("Tab One") .setIndicator("Some Text", tabIcon) .setContent(intent1); host.addTab(tab1Spec); // Repeat for other tabs • Icon (res/drawable/some_icon.xml) 24 <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://..."> <item android:drawable="@drawable/some_icon_selected" android:state_selected="true" /> <item android:drawable="@drawable/some_icon_normal" /> </selector>
  • 12. © 2012 Marty Hall Questions? JSF 2, PrimeFaces, Java 7, Ajax, jQuery, Hadoop, RESTful Web Services, Android, Spring, Hibernate, Servlets, JSP, GWT, and other Java EE training. Customized Java EE Training: http://courses.coreservlets.com/ Java, JSF 2, PrimeFaces, Servlets, JSP, Ajax, jQuery, Spring, Hibernate, RESTful Web Services, Hadoop, Android. Developed and taught by well-known author and developer. At public venues or onsite at your location.