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 Android intents-3 www.j2program.blogspot.com

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 Android intents-3 www.j2program.blogspot.com (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
 
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
 
jQuery-3-UI
jQuery-3-UIjQuery-3-UI
jQuery-3-UI
 
JQuery-Tutorial
 JQuery-Tutorial JQuery-Tutorial
JQuery-Tutorial
 
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

Spellings Wk 3 English CAPS CARES Please Practise
Spellings Wk 3 English CAPS CARES Please PractiseSpellings Wk 3 English CAPS CARES Please Practise
Spellings Wk 3 English CAPS CARES Please PractiseAnaAcapella
 
ICT Role in 21st Century Education & its Challenges.pptx
ICT Role in 21st Century Education & its Challenges.pptxICT Role in 21st Century Education & its Challenges.pptx
ICT Role in 21st Century Education & its Challenges.pptxAreebaZafar22
 
Jual Obat Aborsi Hongkong ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan...
Jual Obat Aborsi Hongkong ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan...Jual Obat Aborsi Hongkong ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan...
Jual Obat Aborsi Hongkong ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan...ZurliaSoop
 
HMCS Max Bernays Pre-Deployment Brief (May 2024).pptx
HMCS Max Bernays Pre-Deployment Brief (May 2024).pptxHMCS Max Bernays Pre-Deployment Brief (May 2024).pptx
HMCS Max Bernays Pre-Deployment Brief (May 2024).pptxEsquimalt MFRC
 
Sociology 101 Demonstration of Learning Exhibit
Sociology 101 Demonstration of Learning ExhibitSociology 101 Demonstration of Learning Exhibit
Sociology 101 Demonstration of Learning Exhibitjbellavia9
 
Wellbeing inclusion and digital dystopias.pptx
Wellbeing inclusion and digital dystopias.pptxWellbeing inclusion and digital dystopias.pptx
Wellbeing inclusion and digital dystopias.pptxJisc
 
Unit-V; Pricing (Pharma Marketing Management).pptx
Unit-V; Pricing (Pharma Marketing Management).pptxUnit-V; Pricing (Pharma Marketing Management).pptx
Unit-V; Pricing (Pharma Marketing Management).pptxVishalSingh1417
 
Jamworks pilot and AI at Jisc (20/03/2024)
Jamworks pilot and AI at Jisc (20/03/2024)Jamworks pilot and AI at Jisc (20/03/2024)
Jamworks pilot and AI at Jisc (20/03/2024)Jisc
 
Beyond_Borders_Understanding_Anime_and_Manga_Fandom_A_Comprehensive_Audience_...
Beyond_Borders_Understanding_Anime_and_Manga_Fandom_A_Comprehensive_Audience_...Beyond_Borders_Understanding_Anime_and_Manga_Fandom_A_Comprehensive_Audience_...
Beyond_Borders_Understanding_Anime_and_Manga_Fandom_A_Comprehensive_Audience_...Pooja Bhuva
 
Sensory_Experience_and_Emotional_Resonance_in_Gabriel_Okaras_The_Piano_and_Th...
Sensory_Experience_and_Emotional_Resonance_in_Gabriel_Okaras_The_Piano_and_Th...Sensory_Experience_and_Emotional_Resonance_in_Gabriel_Okaras_The_Piano_and_Th...
Sensory_Experience_and_Emotional_Resonance_in_Gabriel_Okaras_The_Piano_and_Th...Pooja Bhuva
 
Food safety_Challenges food safety laboratories_.pdf
Food safety_Challenges food safety laboratories_.pdfFood safety_Challenges food safety laboratories_.pdf
Food safety_Challenges food safety laboratories_.pdfSherif Taha
 
This PowerPoint helps students to consider the concept of infinity.
This PowerPoint helps students to consider the concept of infinity.This PowerPoint helps students to consider the concept of infinity.
This PowerPoint helps students to consider the concept of infinity.christianmathematics
 
FSB Advising Checklist - Orientation 2024
FSB Advising Checklist - Orientation 2024FSB Advising Checklist - Orientation 2024
FSB Advising Checklist - Orientation 2024Elizabeth Walsh
 
UGC NET Paper 1 Mathematical Reasoning & Aptitude.pdf
UGC NET Paper 1 Mathematical Reasoning & Aptitude.pdfUGC NET Paper 1 Mathematical Reasoning & Aptitude.pdf
UGC NET Paper 1 Mathematical Reasoning & Aptitude.pdfNirmal Dwivedi
 
How to Manage Global Discount in Odoo 17 POS
How to Manage Global Discount in Odoo 17 POSHow to Manage Global Discount in Odoo 17 POS
How to Manage Global Discount in Odoo 17 POSCeline George
 
Interdisciplinary_Insights_Data_Collection_Methods.pptx
Interdisciplinary_Insights_Data_Collection_Methods.pptxInterdisciplinary_Insights_Data_Collection_Methods.pptx
Interdisciplinary_Insights_Data_Collection_Methods.pptxPooja Bhuva
 
2024-NATIONAL-LEARNING-CAMP-AND-OTHER.pptx
2024-NATIONAL-LEARNING-CAMP-AND-OTHER.pptx2024-NATIONAL-LEARNING-CAMP-AND-OTHER.pptx
2024-NATIONAL-LEARNING-CAMP-AND-OTHER.pptxMaritesTamaniVerdade
 
General Principles of Intellectual Property: Concepts of Intellectual Proper...
General Principles of Intellectual Property: Concepts of Intellectual  Proper...General Principles of Intellectual Property: Concepts of Intellectual  Proper...
General Principles of Intellectual Property: Concepts of Intellectual Proper...Poonam Aher Patil
 
How to setup Pycharm environment for Odoo 17.pptx
How to setup Pycharm environment for Odoo 17.pptxHow to setup Pycharm environment for Odoo 17.pptx
How to setup Pycharm environment for Odoo 17.pptxCeline George
 

Recently uploaded (20)

Spellings Wk 3 English CAPS CARES Please Practise
Spellings Wk 3 English CAPS CARES Please PractiseSpellings Wk 3 English CAPS CARES Please Practise
Spellings Wk 3 English CAPS CARES Please Practise
 
ICT Role in 21st Century Education & its Challenges.pptx
ICT Role in 21st Century Education & its Challenges.pptxICT Role in 21st Century Education & its Challenges.pptx
ICT Role in 21st Century Education & its Challenges.pptx
 
Jual Obat Aborsi Hongkong ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan...
Jual Obat Aborsi Hongkong ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan...Jual Obat Aborsi Hongkong ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan...
Jual Obat Aborsi Hongkong ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan...
 
HMCS Max Bernays Pre-Deployment Brief (May 2024).pptx
HMCS Max Bernays Pre-Deployment Brief (May 2024).pptxHMCS Max Bernays Pre-Deployment Brief (May 2024).pptx
HMCS Max Bernays Pre-Deployment Brief (May 2024).pptx
 
Sociology 101 Demonstration of Learning Exhibit
Sociology 101 Demonstration of Learning ExhibitSociology 101 Demonstration of Learning Exhibit
Sociology 101 Demonstration of Learning Exhibit
 
Wellbeing inclusion and digital dystopias.pptx
Wellbeing inclusion and digital dystopias.pptxWellbeing inclusion and digital dystopias.pptx
Wellbeing inclusion and digital dystopias.pptx
 
Unit-V; Pricing (Pharma Marketing Management).pptx
Unit-V; Pricing (Pharma Marketing Management).pptxUnit-V; Pricing (Pharma Marketing Management).pptx
Unit-V; Pricing (Pharma Marketing Management).pptx
 
Jamworks pilot and AI at Jisc (20/03/2024)
Jamworks pilot and AI at Jisc (20/03/2024)Jamworks pilot and AI at Jisc (20/03/2024)
Jamworks pilot and AI at Jisc (20/03/2024)
 
Beyond_Borders_Understanding_Anime_and_Manga_Fandom_A_Comprehensive_Audience_...
Beyond_Borders_Understanding_Anime_and_Manga_Fandom_A_Comprehensive_Audience_...Beyond_Borders_Understanding_Anime_and_Manga_Fandom_A_Comprehensive_Audience_...
Beyond_Borders_Understanding_Anime_and_Manga_Fandom_A_Comprehensive_Audience_...
 
Sensory_Experience_and_Emotional_Resonance_in_Gabriel_Okaras_The_Piano_and_Th...
Sensory_Experience_and_Emotional_Resonance_in_Gabriel_Okaras_The_Piano_and_Th...Sensory_Experience_and_Emotional_Resonance_in_Gabriel_Okaras_The_Piano_and_Th...
Sensory_Experience_and_Emotional_Resonance_in_Gabriel_Okaras_The_Piano_and_Th...
 
Food safety_Challenges food safety laboratories_.pdf
Food safety_Challenges food safety laboratories_.pdfFood safety_Challenges food safety laboratories_.pdf
Food safety_Challenges food safety laboratories_.pdf
 
This PowerPoint helps students to consider the concept of infinity.
This PowerPoint helps students to consider the concept of infinity.This PowerPoint helps students to consider the concept of infinity.
This PowerPoint helps students to consider the concept of infinity.
 
FSB Advising Checklist - Orientation 2024
FSB Advising Checklist - Orientation 2024FSB Advising Checklist - Orientation 2024
FSB Advising Checklist - Orientation 2024
 
Mehran University Newsletter Vol-X, Issue-I, 2024
Mehran University Newsletter Vol-X, Issue-I, 2024Mehran University Newsletter Vol-X, Issue-I, 2024
Mehran University Newsletter Vol-X, Issue-I, 2024
 
UGC NET Paper 1 Mathematical Reasoning & Aptitude.pdf
UGC NET Paper 1 Mathematical Reasoning & Aptitude.pdfUGC NET Paper 1 Mathematical Reasoning & Aptitude.pdf
UGC NET Paper 1 Mathematical Reasoning & Aptitude.pdf
 
How to Manage Global Discount in Odoo 17 POS
How to Manage Global Discount in Odoo 17 POSHow to Manage Global Discount in Odoo 17 POS
How to Manage Global Discount in Odoo 17 POS
 
Interdisciplinary_Insights_Data_Collection_Methods.pptx
Interdisciplinary_Insights_Data_Collection_Methods.pptxInterdisciplinary_Insights_Data_Collection_Methods.pptx
Interdisciplinary_Insights_Data_Collection_Methods.pptx
 
2024-NATIONAL-LEARNING-CAMP-AND-OTHER.pptx
2024-NATIONAL-LEARNING-CAMP-AND-OTHER.pptx2024-NATIONAL-LEARNING-CAMP-AND-OTHER.pptx
2024-NATIONAL-LEARNING-CAMP-AND-OTHER.pptx
 
General Principles of Intellectual Property: Concepts of Intellectual Proper...
General Principles of Intellectual Property: Concepts of Intellectual  Proper...General Principles of Intellectual Property: Concepts of Intellectual  Proper...
General Principles of Intellectual Property: Concepts of Intellectual Proper...
 
How to setup Pycharm environment for Odoo 17.pptx
How to setup Pycharm environment for Odoo 17.pptxHow to setup Pycharm environment for Odoo 17.pptx
How to setup Pycharm environment for Odoo 17.pptx
 

Android intents-3 www.j2program.blogspot.com

  • 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.