[英]Have to press the back button twice to get to previous activity?
我只是試圖單擊返回並導航到我以前的活動。 我的流程是這樣的:我進入news_feed activity
-> Comments activity
-> User Profile activity
-> click back
(轉到Comments activity
)-> click back
(出於某種原因,這沒有任何作用)->單擊后退(返回到news_feed activity
)。 我不知道為什么我要點擊back
當我嘗試從去兩次Comments activity
回news_feed
活動。 如果我從news_feed
活動-> Comments
->后退(轉到news_feed activity
),這將非常有效。 這是我的代碼:
news_feed.java:
@Override
public void onBackPressed() {
super.onBackPressed();
Intent startMain = new Intent(Intent.ACTION_MAIN);
startMain.addCategory(Intent.CATEGORY_HOME);
startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(startMain);
}
Comments.java:
@Override
public void onBackPressed() {
super.onBackPressed();
this.finish();
}
UserProfile.java:
@Override
public void onBackPressed() {
super.onBackPressed();
Intent intent = new Intent(UserProfile.this, Comments.class);
Bundle bundle = new Bundle();
bundle.putString("postId", postId);
bundle.putString("posterUserId", posterUserId);
bundle.putString("posterName", posterName);
bundle.putString("postStatus", postStatus);
bundle.putString("postTimeStamp", postTimeStamp);
bundle.putString("postTitle", postTitle);
intent.putExtras(bundle);
startActivity(intent);
finish();
}
我認為導航到這些活動不會改變任何事情,但是如有必要,我也可以包含我以前導航到這些活動的意圖。 否則,我將僅包含用於這些活動的onBackPressed
代碼。 有什么想法可能會導致問題嗎? 任何幫助,將不勝感激。 謝謝。
您可以嘗試如下操作:
private boolean clicked;
@Override
public void onBackPressed() {
if (!clicked) { // if it was not clicked before, change the value of clicked to true and do nothing directly return, if clicked again, then it will be finish the activity.
clicked=true;
return;
}
super.onBackPressed();
}
如果您要使用時間,則可以執行以下操作:
private long lastClicked;
@Override
public void onBackPressed() {
if (System.currentTimeMillis() - lastClicked < 1000) { // within one second
super.onBackPressed();
}
lastClicked = System.currentTimeMillis();
}
我想通過使用以下命令將結果發送回上一個活動:開始活動
startActivityForResult()
進入
startActivity()
而且不要覆蓋
onBackPressed()
public void onBackPressed() {
if (this.lastBackPressTime < System.currentTimeMillis() - 2000) {
this.lastBackPressTime = System.currentTimeMillis();
} else {
//super.onBackPressed(); for exit
//INTENT HERE TO YOUR SECOND ACTIVITY like below
Intent intent=new Intent(A.this,B.class);
startActivirty(intent);
}
}
創建一個全局變量
private long lastBackPressTime = 0;
希望這會對您有所幫助,讓我知道..
在UserProfile
類的onBackPressed()
方法中,您將再次啟動Comments
類。 為什么要這樣做? 發生的事情是,您正在USerProfile類的onBackPressed()
上啟動一個新的Comment活動,因此有兩個Comments Activity實例。 因此,您感覺自己在兩次按btn。
如果必須將數據從UserProfile
類傳遞回Comments
,則可以使用setResult()
方法。
這會有所幫助
如果您要做的只是在當前活動中調用startActivity()
和finish()
,則無需覆蓋onBackPressed()
。 Android backstack將為您處理這兩種情況。 此外,在UserProfile.java
您正在將數據傳遞到上一個活動。 對於這一點,你應該使用startActvityForResult()
在Comments
活動(即以前的活動),而不是startActivity()
要了解有關startActvityForResult()
更多信息,請訪問: https : //developer.android.com/training/basics/intents/result.html
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.