gpt4 book ai didi

Android:按下后退按钮时刷新以前的 fragment 数据

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:50:18 25 4
gpt4 key购买 nike

我有 2 个 fragment , fragment A 和 fragment B。我通过使用 FragmentTransaction().add 在 fragment A 上添加了 fragment B,这意味着 fragment A 是 fragment B 的基础。是否有一种在我对 fragment B 执行某些操作并按下 fragment B 的 后退 按钮后更改 fragment A 中数据的方法?我希望有一个通用的方式来通知 Fragment A。因为它可能是另一个 Fragment 被覆盖。我尝试使用 FragmentTransaction.replace() - 它可以很好地刷新上一页。

最佳答案

只需在您的 Activity 和 fragment 中覆盖 onBackPressed() 并在那里执行所需的调用。

更多关于回调/与其他 fragment 的通信可以在这里找到:

Communicating with Other Fragments

public class FragmentA extends Fragment {
public void updateMyself(String updateValue){
Log.v("update", "weeee Fragment B updated me with" + updateValue);
}
}

public class FragmentB extends Fragment {

public Interface FragmentBCallBackInterface {
public void update(String updateValue);
}

private FragmentBCallBackInterface mCallback;

@Override
public void onAttach(Activity activity) {
super.onAttach(activity);

try {
mCallback = (FragmentBCallBackInterface) activity;
} catch (ClassCastException e) {
throw new ClassCastException(activity.toString()
+ " must implement FragmentBCallBackInterface");
}
//As an example we do an update here - normally you wouln't call the method until your user performs an onclick or something
letsUpateTheOtherFragment();
}

private void letsUpateTheOtherFragment(){
mCallback.update("This is an update!);
}
}


public class MyActivity extends Activity implements FragmentInterfaceB {

@Override
public void update(String updateValue){
FragmentA fragmentA = (FragmentA) getSupportFragmentManager().findFragmentById(R.id.article_fragment);

if (fragmentA != null) {
fragmentA.updateMyself(updateValue);
} else {
//replace the fragment... bla bla check example for this code
}
}
}

关于Android:按下后退按钮时刷新以前的 fragment 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16081235/

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