我的Android應用程序中包含一個自定義後退按鈕。點擊片段時我的自定義動畫是好的,但似乎我不能應用動畫時,單擊我自己的後退按鈕,甚至是後退按鈕的Android。我不知道如何解決它,我已經將這些代碼包含在我的Activity類中,但它似乎不起作用。Android後退按鈕和片段 - 動畫無效
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.menuitem1:
break;
case R.id.menuitem2:
super.onBackPressed();
overridePendingTransition(R.anim.slide_in_left, R.anim.slide_out_right);
break;
default:
break;
}
return true;
}
我也試着重寫onbackPressed方法,但它似乎也沒有工作
@Override
public void onBackPressed() {
super.onBackPressed();
overridePendingTransition(R.anim.slide_in_left, R.anim.slide_out_right);
}
我不知道如何實現這一個...請幫我問心無愧這一個,因爲我們由於這個原因正在耗盡時間。謝謝
等待積極的迴應。
編輯
確定這就是我建立了我的片段
在我的主要活動:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
ActionBar actionBar = getActionBar();
Drawable myIcon = getResources().getDrawable(R.drawable.header_bg);
actionBar.setSplitBackgroundDrawable(myIcon);
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
ActionBar.Tab tabA = actionBar.newTab().setIcon(R.drawable.about);
ActionBar.Tab tabB = actionBar.newTab().setIcon(R.drawable.sponsors);
ActionBar.Tab tabC = actionBar.newTab().setIcon(R.drawable.map);
ActionBar.Tab tabD = actionBar.newTab().setIcon(R.drawable.destination);
Fragment aboutTab = new PhotosActivity();
Fragment sponsorTab = new SongsActivity();
Fragment mapTab = new HCCMapActivity();
Fragment DestinationTab = new DestinationActivity();
tabA.setTabListener(new MyTabsListener(aboutTab));
tabB.setTabListener(new MyTabsListener(sponsorTab));
tabC.setTabListener(new MyTabsListener(mapTab));
tabD.setTabListener(new MyTabsListener(DestinationTab));
actionBar.addTab(tabD, 0, true);
actionBar.addTab(tabC, 1, false);
actionBar.addTab(tabA, 2, false);
actionBar.addTab(tabB, 3, false);
}
protected class MyTabsListener implements TabListener{
Fragment fragment;
public MyTabsListener(Fragment fragment){
this.fragment = fragment;
}
public void onTabSelected(Tab tab, FragmentTransaction ft) {
Log.i("Tab Position Now", Integer.toString(tab.getPosition()));
if (myTabPosition < 0){
ft.setCustomAnimations(android.R.animator.fade_in, android.R.animator.fade_out);
}else{
if (myTabPosition > tab.getPosition()){
ft.setCustomAnimations(R.anim.slide_in_left, R.anim.slide_out_right);
Log.i("Tab Position Before",Integer.toString(myTabPosition));
}else{
ft.setCustomAnimations(R.anim.slide_out_left, R.anim.slide_out_right);
Log.i("Tab Position Before1",Integer.toString(myTabPosition));
}
}
myTabPosition = tab.getPosition();
ft.replace(R.id.fragment_place, fragment, null);
// ft.commit();
}
public void onTabUnselected(Tab tab, FragmentTransaction ft) {
// TODO Auto-generated method stub
ft.remove(fragment);
}
public void onTabReselected(Tab tab, FragmentTransaction ft) {
// TODO Auto-generated method stub
}
}
在我的片段中的一個類別:
例如destinationActivity
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){
View view = inflater.inflate(R.layout.destination_layout, container, false);
ArrayList<Category> category = new ArrayList<Category>();
ListView lv = (ListView)view.findViewById(android.R.id.list);
category.add(new Category("Image", "Image Banner"));
category.add(new Category("HISTORICAL TOURS", "Historical Desc"));
category.add(new Category("CULTURAL TOURS", "Cultural Desc"));
lv.setAdapter(new CategoryAdapter(getActivity(), R.layout.list_view, category));
lv.setClickable(true);
super.setMenuVisibility (false);
super.setHasOptionsMenu(false);
return view;
}
@Override
public void onListItemClick(ListView l, View v, int position, long id) {
Log.i("FragmentList", "Item clicked: " + id);
final FragmentTransaction ft = getFragmentManager().beginTransaction();
if (id == 1){
// ft.remove(fragment)
ft.setCustomAnimations(R.anim.slide_in_left, R.anim.slide_in_right);
ft.replace(R.id.fragment_place, new ListLocationActivity(), null);
ft.addToBackStack(null);
ft.commit();
}else if (id == 2){
ft.setCustomAnimations(R.anim.slide_in_left, R.anim.slide_in_right);
ft.replace(R.id.fragment_place, new ListLocationActivity(), null);
ft.addToBackStack(null);
ft.commit();
}
}
是否需要添加第二個後退按鈕?在Android Design Pattern doco(http://developer.android.com/design/patterns/index.html)中不鼓勵這樣的事情。但是,這並不能真正解決您的潛在問題。你能否闡明你如何設置你的片段? – 2012-07-09 02:48:43
好的...即使在我的android應用程序中沒有自定義後退按鈕。動畫也不適用於android的後退按鈕(在虛擬導航控件中)...請回復...謝謝 – 2012-07-09 03:56:49
有一個錯誤在ICS compat庫中遇到此問題 - http://code.google.com/p/android/issues/detail?id=15623&colspec=ID%20Type%20Status%20Owner%20Summary%20Stars - 是否已更新到最新版本compat庫?沒有任何我能看到的第一眼看起來不對...... – 2012-07-09 04:47:28