![](/img/trans.png)
[英]Child Activity of ActivityGroup is not finished after finish() is called
[英]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.