首页 > 解决方案 > 从活动移动到上一个片段

问题描述

我在应用程序中有三个片段。我正在创建,称它们为 f1、f2、f3。所有这些都包含在 MainActivity 中。在第三个片段 f3 中,我有一个按钮,可将用户带到他们可以发布图片的活动。现在,只要发布成功(使用 onSuccessListener),我就会显示一条 toast 消息,然后使用意图将用户带到 MainActivity。

一切正常,但我想将用户带到上一个片段 f3,而不是使用片段 f1 启动的 MainActivity。我怎样才能做到这一点?

这是我迄今为止尝试过的:

@Override
public void onBackPressed(){
    finish();
}

//没有工作

这是正在使用的当前代码

//我的其他代码

PostsRef.child(current_user_id + timesfm).updateChildren(postsMap)
                        .addOnCompleteListener(new OnCompleteListener() {
                            @Override
                            public void onComplete(@NonNull Task task)
                            {
                                if(task.isSuccessful())
                                {
                                    Toast.makeText(PostActivity.this, "Post updated.", Toast.LENGTH_SHORT).show();
                                    loadingBar.dismiss();
                                    SendUserToMain();
                                }
                                else
                                {
                                    Toast.makeText(PostActivity.this, "Error Occured.Please try again.", Toast.LENGTH_SHORT).show();
                                    loadingBar.dismiss();
                                }
                            }
                        });
            }
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });
}

private void SendUserToMain() {
    Intent mIntent = new Intent(PostActivity.this, MainActivity.class);
    mIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
    startActivity(mIntent);
}

标签: javaandroid

解决方案


您需要做的不是调用,而是SendUserToMain();调用finish(),因为具有最后一个片段状态的前一个 Activity 位于 backstack 上。目前,您的SendUserToMain();方法正在创建一个新实例,MainActivity该实例将调用其onCreate()方法并将 Activity 设置为就好像它是新的(它是)一样。


推荐阅读