[Android UI介面] tab_Host頁面跳轉,傳值,重新整理等問題彙總。
之前做了一個專案是關於Tab_Host的,現在完成了恰逢閒餘寫份總結,主要涉及裡面遇到問題以及解決方案的。
(首先說明這份程式碼是在eoe 下載的,這裡感謝分享的那位朋友,限於我的工程是公司的不能拿出來了,只能那這份原來的程式碼進行修改貼出來,歡迎拍磚);
import android.app.TabActivity;
import android.content.Intent;
import android.os.Bundle;
import android.widget.RadioGroup;
import android.widget.TabHost;
import android.widget.RadioGroup.OnCheckedChangeListener;
public class TabTest extends TabActivity{
private RadioGroup group;
private TabHost tabHost;
public static final String TAB_HOME="tabHome";
public static final String TAB_MES="tabMes";
public static final String TAB_TOUCH="tab_touch";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.maintabs);
group = (RadioGroup)findViewById(R.id.main_radio);
tabHost = getTabHost();
tabHost.addTab(tabHost.newTabSpec(TAB_HOME)
.setIndicator(TAB_HOME)
.setContent(new Intent(this,Main.class)));
tabHost.addTab(tabHost.newTabSpec(TAB_MES)
.setIndicator(TAB_MES)
.setContent(new Intent(this,Main2.class)));
tabHost.addTab(tabHost.newTabSpec(TAB_TOUCH)
.setIndicator(TAB_TOUCH)
.setContent(new Intent(this,TouchTest.class)));
group.setOnCheckedChangeListener(new OnCheckedChangeListener() {
public void onCheckedChanged(RadioGroup group, int checkedId) {
switch (checkedId) {
case R.id.radio_button0:
tabHost.setCurrentTabByTag(TAB_HOME);
break;
case R.id.radio_button1:
tabHost.setCurrentTabByTag(TAB_MES);
break;
case R.id.radio_button2:
tabHost.setCurrentTabByTag(TAB_TOUCH);
break;
default:
break;
}
}
});
}
}
效果如如下:
首先解決tab_host 的actitvty的跳轉重新整理,
public void onCheckedChanged()方法進行group監控點選不同的事件響應,但是也只有點選不同的事件才會響應,這樣問題就來了:比如同一個actitvty進行 頁面的縮放的的按鈕就沒有辦法響應了。這裡我是進行group立面的每一個RadioButton進行事件的處理 RadioButton.setOnClickListener().有人會說,不同的頁面一旦顯示一次當再次顯示就不在重新整理了,那麼你可以這樣設定一下頁面的跳轉:
tabHost.addTab(tabHost
.newTabSpec(TAB_NEXT)
.setIndicator(TAB_NEXT)
.setContent(
new Intent(new Intent(this, DrawReportActivity.class))
.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)
));
看看和上面程式碼有何不同,不錯就是這裡: .addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)//就是這裡起作用
下面解決進行頁面傳值的問題:
首先進行tab_host 向各個頁面的傳值:這個和普通的傳值一樣沒有區別,
Intent intent_main = new Intent(this, DrawReportActivity.class);
Bundle bundle = new Bundle();
bundle.putInt("page", 1);
intent_main.putExtras(bundle);
tabHost.addTab(tabHost
.newTabSpec(TAB_LAST)
.setIndicator(TAB_LAST)
.setContent(
new Intent(intent_main)
.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)));
在相應的DrawReportActivity獲取這個資料就可以
其次進行不同actitvty 之間傳值的說明:
比如在A.actitvty要求跳轉到B.actitvty裡面,這裡這樣進行的跳轉:
TabTest.tabHost.setCurrentTabByTag(TabTest.TAB_LAST);
將上面程式碼裡面的tabHost進行靜態化,進行group的跳轉過去,這樣就顯示需要跳轉的頁面了,傳值呢?傳值在這裡可以採取進行廣播的方法:
傳送廣播:
Intent it = new Intent(action1);
it.putExtra("url", et.getText().toString());
sendBroadcast(it);
在註冊Androidmanifest.xml進行宣告:
<receiver android:name="com.raq.tab.Broadcastreceiver">
<intent-filter>
<action android:name="Broadcast_page_num" />
</intent-filter>
</receiver>
得到相應的廣播:
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
public class Broadcastreceiver extends BroadcastReceiver {
public String url;
public void onReceive(Context context, Intent intent) {
url = intent.getExtras().getString("url");
}
}
進行傳值,我覺得如果資料不是很多的話,完全可以寫個靜態類,進行存放一些資料,
這樣跳轉actitvty類得到時候進行同時的資料存放就可以了。
最後奉上原始碼,隨時恭候拍磚!