Android Tutorials—–Tab Layout ,錯誤提示 tabHost.setCurrentTab(getIntent());

來源:互聯網
上載者:User

今天晚上我按照android開發網,做一個Tab Layout的執行個體,卻總是無法成功!

沒道理官方網站的教程都是錯的啊!!

結果經過我的不段的測試,總算成功了!也把心裡體會拿出來與大家分享!

原教程:http://developer.android.com/intl/zh-CN/resources/tutorials/views/hello-tabwidget.html

 

 

運行環境:

eclipse 3.4

android 1.6

 

如果按照上面所做,不會成功的!其中還缺少重要檔案和代碼,我將重要步驟貼出:

1.Start a new project named HelloTabWidget

. (不變)

2.分別建立三個java:ArtistsActivity

, AlbumsActivity

, and
SongsActivity

public class ArtistsActivity extends Activity {<br /> public void onCreate(Bundle savedInstanceState) {<br /> super.onCreate(savedInstanceState); </p><p> TextView textview = new TextView(this);<br /> textview.setText("This is the Artists tab");<br /> setContentView(textview);<br /> }<br />}

我們只需將其中的"This is the Artists tab" 中的Artists替換成Albums,Songs

3.在res/drawable/(有的是drawable-mdpi),下面建立:三個圖片(png格式,且是透明的)分別為ic_tab_artists.png,ic_tab_albums.png,ic_tab_songs.png。如果沒有手邊沒有png格式圖片的話,可以到(android安裝目錄/platforms/android-1.6/data/res/drawable/)下面找,很多!

重要的一點,其實並不需要想教程所說建立ic_tab_artists.xml,完全沒有必要的!我自認為!

請讓我給你分析:建立Tab Layout時,選中的表徵圖背景會成白色。如果沒有選中的表徵圖,背景會成灰色。而我們找的icon表徵圖本身是淺灰色。

 

4.Open the res/layout/main.xml

file and insert the following:(不變)

5Now open HelloTabWidget.java

and make it extend TabActivity


:.package com.hello.tabview;<br />import android.app.TabActivity;<br />import android.content.Intent;<br />import android.content.res.Resources;<br />import android.os.Bundle;<br />import android.widget.TabHost;<br />public class HelloTabWidget extends TabActivity {<br />public void onCreate(Bundle savedInstanceState) {<br /> super.onCreate(savedInstanceState);<br /> setContentView(R.layout.main);<br /> Resources res = getResources(); // Resource object to get Drawables<br /> TabHost tabHost = getTabHost(); // The activity TabHost<br /> TabHost.TabSpec spec; // Reusable TabSpec for each tab<br /> Intent intent; // Reusable Intent for each tab<br /> // Create an Intent to launch an Activity for the tab (to be reused)<br /> intent = new Intent().setClass(this, ArtistsActivity.class);<br /> // Initialize a TabSpec for each tab and add it to the TabHost<br /> spec = tabHost.newTabSpec("A").setIndicator("文章",<br /> res.getDrawable(R.drawable.ic_tab_artists))<br /> .setContent(intent);<br /> //TabSpec android.widget.TabHost.TabSpec.setContent(Intent intent)<br /> //newTabSpec("mytag")就是為後面的setCurrentTabByTag("mytag")<br /> //setIndicator(label,icon);label就是上面顯示的文字<br /> tabHost.addTab(spec);<br /> // Do the same for the other tabs<br /> intent = new Intent().setClass(this, AlbumsActivity.class);<br /> spec = tabHost.newTabSpec("B").setIndicator("相片",<br /> res.getDrawable(R.drawable.ic_tab_albums))<br /> .setContent(intent);<br /> tabHost.addTab(spec);<br /> intent = new Intent().setClass(this, SongsActivity.class);<br /> spec = tabHost.newTabSpec("C").setIndicator("歌曲",<br /> res.getDrawable(R.drawable.ic_tab_songs))<br /> .setContent(intent);<br /> tabHost.addTab(spec);<br /> //tabHost.setCurrentTab(0);//預設tab是從0開始,設定當前的tab標籤<br /> tabHost.setCurrentTabByTag("B");<br />}<br />} 

6.還有一個關鍵的地方:就是修改AndroidManifest.xml檔案,挨著<activity android:name=".HelloTabWidget

" .....>....</acitivity>後面添加代碼:

<activity android:name=".AlbumsActivity"<br /> android:label="@string/app_name"<br /> android:theme="@android:style/Theme.NoTitleBar"><br /> </activity><br /> <activity android:name=".ArtistsActivity"<br /> android:label="@string/app_name"<br /> android:theme="@android:style/Theme.NoTitleBar"><br /> </activity><br /> <activity android:name=".SongsActivity"<br /> android:label="@string/app_name"<br /> android:theme="@android:style/Theme.NoTitleBar"><br /> </activity>

7.然後運行項目,得到如片。(可能你們的有點區別)

 

 

呵呵,總算成功了。

不過我還發現一個問題,但是沒有解決。

問題:如果你按下首頁表徵圖

,然後再進入此應用,tab標籤仍留在推出的狀態

         但是如果你按下後退鍵

,再進入,tab標籤還原成預設狀態。

現在沒找到答案,有哪位兄弟能夠給我解答!!

 

 

 

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.