gpt4 book ai didi

android - 弹出 fragment 后退堆栈后显示 snackbar

转载 作者:行者123 更新时间:2023-12-05 07:48:31 36 4
gpt4 key购买 nike

我试图在一个 fragment 中执行一个 Action ,然后移动到上一个 fragment 并显示一个带有消息的 snackbar ,确认第一个 fragment 中的 Action 。但是,我在第一个 fragment (我正在移动的 fragment )中创建并显示 snackbar ,而 snackbar 没有出现在我要更改的 fragment 中,可能是因为它显示在我正在移动的 fragment 中来自。

我在警报对话框中执行代码:

builder.setPositiveButton(positiveText, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dbHandler.deleteExercise(exercise.getId());

// Making the snackbar here did not work, either.

getFragmentManager().popBackStack();

Snackbar snack = Snackbar.make(mainLayout, "Exercise deleted", Snackbar.LENGTH_SHORT);
snack.show();
}
});

知道如何实现这一目标吗?

谢谢!

编辑:

我制作了这张令人难以置信的粗略的流程图,以便更清楚地说明我要实现的目标。

最佳答案

我最终通过主要的 Activity 实现了 Fragments 之间的消息传递,并在 fragment 的 onResume() 方法中检查消息:

主要 Activity :

private String fragmentTransactionMessage;

@Override
protected void onCreate(Bundle savedInstanceState) {

// Snip

// Initialize fragment transaction message
fragmentTransactionMessage = null;

// Snip
}

// Three methods used to send information (text) between fragments
public void setFragmentTransactionMessage(String message) {
this.fragmentTransactionMessage = message;
}

public String getFragmentTransactionMessage() {
return fragmentTransactionMessage;
}

public void resetFragmentTransactionMessage() {
this.fragmentTransactionMessage = null;
}

fragment 2:

// Remove exercise from database
dbHandler.deleteExercise(exercise.getId());

// Update message in main activity
((MainActivity)getActivity()).setFragmentTransactionMessage("Item deleted");

// Move to previous fragment
getFragmentManager().popBackStack();

fragment 1:

@Override
public void onResume() {
super.onResume();

// Check for messages in main activity
String message = ((MainActivity)getActivity()).getFragmentTransactionMessage();

// If any, display as snackbar
if(message != null) {
Snackbar snack = Snackbar.make(mainLayout, message, Snackbar.LENGTH_SHORT);
snack.show();

// Reset message in activity
((MainActivity)getActivity()).resetFragmentTransactionMessage();
}
}

关于android - 弹出 fragment 后退堆栈后显示 snackbar ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38433487/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com