簡體   English   中英

必須兩次按返回按鈕才能進入上一個活動?

[英]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 activitynews_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()方法。

這會有所幫助

按下時如何將數據從第二活動傳遞到第一活動? -安卓

將數據發送回android中的Main Activity

如果您要做的只是在當前活動中調用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.

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