1

Android アプリケーションにカスタムの [戻る] ボタンが含まれています。フラグメントをクリックしたときのカスタム アニメーションは問題ありませんが、自分の戻るボタンまたは 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);

    }

これを実装する方法がわかりません...これが原因で時間がなくなっているため、親切にこれを手伝ってください。ありがとうございました

肯定的な応答を待っています。

私の Android アプリケーションのスクリーンキャスト http://content.screencast.com/users/junnel1001/folders/Jing/media/2a13fd01-f467-4889-ac21-743c188a0f67/2012-07-09_1032.png

編集

これがフラグメントのセットアップ方法です

私の主な活動では:

 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

        }





    }

私のフラグメントクラスの1つで:

例: 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(); 
         }

     }
4

1 に答える 1

1

戻るボタンの機能をオーバーライドする必要がありますか? 新しいイベント トリガーを作成して、オーバーライドではなく独自の機能を持たせてみませんか? なので「このボタンを押す」と「スライドイン/アウト」。次に、アクティビティを終了したい場合は、「finish()」コマンドまたは「finishActivity()」を入力するだけです。

Android: 前のアクティビティに戻る

「戻るボタンを使用して前のアクティビティに戻る必要がある場合、overridePendingTransition() を使用したアニメーション遷移はありません。スプラッシュ アクティビティなど、一度だけ発生し、履歴スタックから削除されるアクティビティの場合、overridePendingTransition() は完璧です。以前のアクティビティに戻るアニメーションが必要な場合は、他の方法を検討してください。」

http://www.anddev.org/novice-tutorials-f8/splash-fade-activity-animations-overridependingtransition-t9464.html

于 2012-07-09T04:15:51.957 に答える