Tabs With Intents
If you look at the Android widgets and classes related to tabs, you’ll see that a tab can have either a View or an Activity as its contents. Most of the time, people use Views, as they are simpler to implement and lighter-weight to run. However, there may be circumstances where you feel putting your activities in tabs would be useful, so let’s take a look at how that is done, in a modified excerpt from Version 1.9 of The Busy Coder’s Guide to Android Development.
If you want to use an Activity as the content of a tab, you provide an Intent that will launch the desired Activity; Android’s tab-management framework will then pour the Activity’s user interface into the tab. So, let’s create a tabbed Web browser.
Your natural instinct might be to use an http: Uri as the target of the Intents, one Intent per tab. That way, you could use the built-in Browser application and get all of the features that it offers. Alas, this does not work. It appears you cannot host other applications’ activities in your tabs, only your own activities, presumably for security reasons.
But, we can always use the WebView widget to provide a simplified browsing experience.
Here is the source to the main activity, the one hosting the TabView:
[sourcecode language="java"]
public class IntentTabDemo extends TabActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
TabHost host=getTabHost();
host.addTab(host.newTabSpec(“one”)
.setIndicator(“CW”)
.setContent(new Intent(this, CWBrowser.class)));
host.addTab(host.newTabSpec(“two”)
.setIndicator(“Android”)
.setContent(new Intent(this, AndroidBrowser.class)));
}
}
[/sourcecode]
As you can see, we are using TabActivity as the base class, and so we do not need our own layout XML — TabActivity supplies it for us. All we do is get access to the TabHost and add two tabs, each specifying an Intent that directly refers to another class. In this case, our two tabs will host a CWBrowser and an AndroidBrowser, respectively.
Those latter two activities are simple wrappers around WebView:
[sourcecode language="java"]
public class CWBrowser extends Activity {
WebView browser;
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
browser=new WebView(this);
setContentView(browser);
browser.loadUrl(“http://commonsware.com”);
}
}
[/sourcecode]
[sourcecode language="java"]
public class AndroidBrowser extends Activity {
WebView browser;
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
browser=new WebView(this);
setContentView(browser);
browser.loadUrl(“http://code.google.com/android”);
}
}
[/sourcecode]
They simply load a different URL into the browser: the CommonsWare home page in one, the Android home page in the other.
The resulting UI shows what tabbed browsing could look like on Android:
Using distinct subclasses for each targeted page is rather wasteful. Instead, we could have packaged the URL to open as an “extra” in an Intent and used that Intent to spawn a general-purpose BrowserTab activity, which would read the URL out of the Intent “extra” and use this. The proof of this is left as an exercise for the reader.











Pingback: cash loan
Pingback: find this
Pingback: Find Out More article source this site
Pingback: Clicking Here Visit Your Natural-Bed.com click here
Pingback: finalfling.me
Pingback: billig strom und gas
Pingback: Las Vegas nightclubs
Pingback: pay day
Pingback: Stock Level: 97N
Pingback: cool site
Pingback: nifika
Pingback: Vibrator Kopen
Pingback: Las Vegas shows
Pingback: Neon Open Sign 97N
Pingback: convert YouTube to DVD
Pingback: chaussures converse
Pingback: wallpaper, wallcovering, wallpapers, wall paper, wallpaper singapore
Pingback: debt settlement
Pingback: Cash Advance Lab
Pingback: debt help solution
Pingback: www.cashadvancelab.com
Pingback: debt relief company
Pingback: learn more
Pingback: waterproofed
Pingback: converting avi mpeg
Pingback: daspartyhaus
Pingback: people search for free
Pingback: payday loans online same day
Pingback: debt service
Pingback: Outsourcing Bonds
Pingback: read more
Pingback: Motor Club of America
Pingback: מדבקות בגלילים
Pingback: budget desktop
Pingback: Kristy Hoeschen
Pingback: Heide Reasner
Pingback: Sunday Matuszak
Pingback: Whitney Pasquarella
Pingback: Ronnie Winiecki
Pingback: Garret Rabinowitz
Pingback: Young Delullo
Pingback: Tonda Blomstrand
Pingback: Sid Bogacki
Pingback: Herbert Topps
Pingback: Tanisha Rowbotham
Pingback: Raina Hektner
Pingback: Lou Skeans
Pingback: Ora Bazzi
Pingback: Kerry Tatu
Pingback: Dagmar Nickless