簡體   English   中英

活動完成finishAfterTransition后未調用onclick

[英]onclick not getting called after activity finished with finishAfterTransition

活動用戶單擊 A中的launchB ,從A轉到活動B
再次,點擊后退按鈕並轉到A。
現在,在這種情況下,不會調用A的相同按鈕的onclick,而將調用其他按鈕click,除了這個launchB !,這很奇怪。 我正在尋找流暢的體驗。

活動B onBackPressed:

    @Override
        public void onBackPressed() {

    for (int i = 0; i < rowContainer.getChildCount(); i++) {

            View rowView = rowContainer.getChildAt(i);
                    rowView.animate()
                            .setStartDelay(i * SCALE_DELAY)
                            .scaleX(0).scaleY(0)
                            .setListener(new AnimatorAdapter() {

                                @Override
                                public void onAnimationEnd(Animator animation) {

                                    @Override
                            public void onAnimationEnd(Animator animation) {

                                super.onAnimationEnd(animation);

                                    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
                                        activity.finishAfterTransition();
                                    }
                                }

                            });

}

        overridePendingTransition(R.anim.enter, R.anim.exit);

       return;
        }


我想念什么嗎?

launchB onclick():

Intent intent = new Intent(A.this, B.class);
        intent.putExtra(AppConstants.DATA, getData());
        startActivity(intent);
        overridePendingTransition(R.anim.in, R.anim.out);

通常在android中,onBackpressed方法不應該被覆蓋,因為在backPress中是由android系統本身處理的。刪除活動,在backpress上從bacstack彈出片段是android系統本身的處理程序。刪除代碼activity.finishAfterTransition()並調用super方法刪除第二個活動。

像這樣更改代碼

  @Override
    public void onBackPressed() {
    super.onBackPressed();
    overridePendingTransition(R.anim.enter, R.anim.exit);

    for (int i = 0; i < rowContainer.getChildCount(); i++) {
        View rowView = rowContainer.getChildAt(i);
        rowView.animate()
                .setStartDelay(i * SCALE_DELAY)
                .scaleX(0).scaleY(0)
                .setListener(new AnimatorAdapter() {
                    @Override
                    public void onAnimationEnd(Animator animation) {
                        @Override
                        public void onAnimationEnd(Animator animation) {
                            super.onAnimationEnd(animation);
                        }

                    });

                }
        }
    }

編輯 :當在onBackPress內部使用時,活動overridePendingTransition()不會提供所需的結果。相反,您必須在活動B的完成中添加代碼。

 @Override
public void finish() {
    super.finish();
    overridePendingTransition(R.anim.enter, R.anim.exit);

    for (int i = 0; i < rowContainer.getChildCount(); i++) {
        View rowView = rowContainer.getChildAt(i);
        rowView.animate()
                .setStartDelay(i * SCALE_DELAY)
                .scaleX(0).scaleY(0)
                .setListener(new AnimatorAdapter() {
                    @Override
                    public void onAnimationEnd(Animator animation) {
                        @Override
                        public void onAnimationEnd (Animator animation){
                            super.onAnimationEnd(animation);
                        }

                    });
                }
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM