我正在使用标签栏。我在每个标签中有三个以上的屏幕,当我按下所选标签的标签按钮时,它应该转到该标签的第一个屏幕,但它不会出现。
这是我的tabar代码。
public class TabUi extends TabActivity {
private static final String TAG_DEALS = "DEAL";
private static final String TAG_SEARCH = "SEARCH";
private static final String TAG_BOOKMARKS = "ALERTS";
private static final String TAG_FRIENDS = "BUZZ";
private static final String TAG_MORE = "MORE";
/*
* private static final String TAG_DEALS = ""; private static final String
* TAG_SEARCH = ""; private static final String TAG_BOOKMARKS = ""; private
* static final String TAG_FRIENDS = ""; private static final String
* TAG_MORE ="";
*/
protected LocationManager locationManager;
Location location;
private static final long MINIMUM_DISTANCE_CHANGE_FOR_UPDATES = 1; // in
// Meters
private static final long MINIMUM_TIME_BETWEEN_UPDATES = 1000; // in
// Milliseconds
// private TabHost host = null;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Resources res = getResources();
TabHost tabHost = getTabHost();
TabHost.TabSpec spec;
Intent intent;
intent = new Intent().setClass(this, DealsActivityGroup.class);
spec = tabHost.newTabSpec(TAG_DEALS)
.setIndicator(TAG_DEALS, res.getDrawable(R.drawable.deal_icon))
.setContent(intent);
tabHost.addTab(spec);
intent = new Intent().setClass(this, SearchActivityGroup.class);
spec = tabHost
.newTabSpec(TAG_SEARCH)
.setIndicator(TAG_SEARCH,
res.getDrawable(R.drawable.search_icon))
.setContent(intent);
tabHost.addTab(spec);
intent = new Intent().setClass(this, BookmarksActivityGroup.class);
spec = tabHost
.newTabSpec(TAG_BOOKMARKS)
.setIndicator(TAG_BOOKMARKS,
res.getDrawable(R.drawable.bookmark_icon))
.setContent(intent);
tabHost.addTab(spec);
intent = new Intent().setClass(this, FriendsActivityGroup.class);
spec = tabHost
.newTabSpec(TAG_FRIENDS)
.setIndicator(TAG_FRIENDS,
res.getDrawable(R.drawable.friend_icon))
.setContent(intent);
tabHost.addTab(spec);
intent = new Intent().setClass(this, MoreActivity.class);
spec = tabHost.newTabSpec(TAG_MORE)
.setIndicator(TAG_MORE, res.getDrawable(R.drawable.more_icon))
.setContent(intent);
tabHost.addTab(spec);
}
/*@Override
protected void onResume() {
// TODO Auto-generated method stub
super.onResume();
}*/
}
这是标签活动组的代码:
public class DealsActivityGroup extends ActivityGroup {
public static DealsActivityGroup group;
private ArrayList<View> history;
private ProgressDialog pDialog;
String Url;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.history = new ArrayList<View>();
group = this;
}
@Override
protected void onResume() {
// TODO Auto-generated method stub
super.onResume();
// new DealsFirst().execute();
View view = getLocalActivityManager().startActivity(
"Dealsfirstactivity",
new Intent(DealsActivityGroup.this, Dealsfirstactivity.class)
.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP))
.getDecorView();
replaceView(view);
}
public void replaceView(View v) {
// Adds the old one to history
history.add(v);
v.setFocusable(true);
v.setFocusableInTouchMode(true);
v.requestFocus();
// Changes this Groups View to the new View.
setContentView(v);
}
public void back() {
System.out.println("History size: " + history.size());
if (history.size() > 1) {
history.remove(history.size() - 1);
View v = history.get(history.size() - 1);
System.out.println("If size: " + history.size());
v.setFocusable(true);
v.setFocusableInTouchMode(true);
v.requestFocus();
System.out.println("View : " + v);
setContentView(v);
} else
// System.out.println("History size: "+ history.size());
this.finish();
}
@Override
public void onBackPressed() {
DealsActivityGroup.group.back();
return;
}
public class DealsFirst extends AsyncTask<String, String, String> {
/**
* Before starting background thread Show Progress Dialog
* */
@Override
protected void onPreExecute() {
super.onPreExecute();
// pDialog = new ProgressDialog(Dealsfirstactivity.this);
// pDialog.setMessage("Please wait!..");
// pDialog.setIndeterminate(false);
// pDialog.setCancelable(true);
// pDialog.show();
}
protected String doInBackground(String... args) {
if (StorageManager.Instance().GetdealscategoryData() == null) {
ServiceHelper.Instance().Dealscategorylist();
}
return null;
}
/**
* After completing background task Dismiss the progress dialog
* **/
protected void onPostExecute(String result) {
// dismiss the dialog once done
super.onPostExecute(result);
if (StorageManager.Instance().GetdealscategoryData() != null
&& StorageManager.Instance().GetdealscategoryData().size() > 0) {
new Dealslistfirst().execute();
}
}
}
public class Dealslistfirst extends AsyncTask<String, String, String> {
/**
* Before starting background thread Show Progress Dialog
* */
@Override
protected void onPreExecute() {
super.onPreExecute();
pDialog = new ProgressDialog(getDialogContext());
pDialog.setMessage("Please wait!..");
pDialog.setIndeterminate(false);
pDialog.setCancelable(true);
pDialog.show();
}
protected String doInBackground(String... args) {
ServiceHelper.Instance().dealsforyoulist(Url);
return null;
}
/**
* After completing background task Dismiss the progress dialog
* **/
protected void onPostExecute(String result) {
// dismiss the dialog once done
super.onPostExecute(result);
if (StorageManager.Instance().GetdealsData() != null
&& StorageManager.Instance().GetdealsData().size() > 0) {
// runOnUiThread(action)
} else if (StorageManager.Instance().GetdealsData() == null) {
}
if (pDialog.isShowing()) {
pDialog.dismiss();
}
View view = getLocalActivityManager().startActivity(
"Dealsfirstactivity",
new Intent(DealsActivityGroup.this,
Dealsfirstactivity.class)
.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP))
.getDecorView();
replaceView(view);
}
}
private Context getDialogContext() {
Context context;
if (getParent() != null)
context = getParent();
else
context = this;
return context;
}
}
答案 0 :(得分:1)
TabActivity 可以在您切换标签时进行识别(从一个标签更改为另一个标签页),但如果您选择当前标签页则无法识别。
我正在使用标签栏。我在每个标签中有三个以上的屏幕 当我按下所选标签的标签按钮时,它应该先到 该标签的屏幕,但它没有。
为此,您需要在TabActivity中实现 onTouchListener 。
答案 1 :(得分:0)
在您的根活动意图中放置“FLAG_ACTIVITY_CLEAR_TOP”标志
Intent intent;
intent = new Intent().setClass(this, DealsActivityGroup.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
spec = tabHost.newTabSpec(TAG_DEALS)
.setIndicator(TAG_DEALS, res.getDrawable(R.drawable.deal_icon))
.setContent(intent);
tabHost.addTab(spec);
对所有选项卡的根目标执行相同的操作,在更改选项卡后,您将通过执行此操作获得第一个选项卡屏幕 并且您必须实现tab ontouch侦听器并将此意图置于触摸事件
中