我只是想点击返回并导航到我以前的活动。我的流程是这样的:我转到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
代码。任何想法为什么会导致问题?任何帮助,将不胜感激。感谢。
答案 0 :(得分:0)
您可以尝试这样的事情:
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();
}
答案 1 :(得分:0)
我想使用
将结果发送回上一个活动的开始活动startActivityForResult()
的内容
startActivity()
并且不要覆盖
onBackPressed()
答案 2 :(得分:0)
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;
希望这会对你有所帮助,让我知道..
答案 3 :(得分:0)
在UserProfile
课程中,在onBackPressed()
方法中,您将再次启动Comments
课程。你为什么要这样做?
发生的事情是,您正在启动USerProfile类的新评论活动onBackPressed()
,因此有两个评论活动实例。所以你觉得你要两次击退btn。
如果您必须将数据从Comments
课程传回UserProfile
,请使用setResult()
方法。
这将有所帮助
How to pass data from 2nd activity to 1st activity when pressed back? - android
答案 4 :(得分:0)
如果你要做的只是在当前活动中拨打onBackPressed()
和startActivity()
,则无需覆盖finish()
。 Android backstack将为您处理这两种情况。此外,在您的UserProfile.java
中,您将数据传递给之前的活动。为此,您应该在startActvityForResult()
活动中使用Comments
(即之前的活动),而不是startActivity()
。
要详细了解startActvityForResult()
访问:https://developer.android.com/training/basics/intents/result.html