gpt4 book ai didi

android - 数据库更新后更新 fragment TextView

转载 作者:行者123 更新时间:2023-11-29 21:05:48 28 4
gpt4 key购买 nike

我希望在完成数据库更新后更新 fragment 中的 TextView 。

我有托管 MainFragment 的 MainActivity

MainFragment 中有一个 TextView,它是我数据库中 a 列的总和。

在 MainActivity 中,我有一个按钮,我按下它会打开一个对话框,我可以在其中向数据库中的列 a 添加一个值。该对话框出现在 fragment 的顶部,但是当我按下确定并将新值发送到数据库,然后尝试更新 TextView 时,它没有更新。

我的 fragment 中有以下内容,但我想它永远不会被调用。

@Override
public void onResume() {
super.onResume();
Log.d("onResume", "here");
int balance = db.getSum();
tvBalanceDollar.setText(Integer.toString(balance));
}

我可以把 db.getSum(); 放在哪里?以及对话框关闭后更新该字段的 setText?

编辑:

fragment 是否会暂停,或者 View 是否会在 Activity 的对话框关闭后重新创建?

最佳答案

正如您所说,onResume() 并不是放置它的最佳方式。我认为最好的方法应该是使用 startActivityForResult(intent, your_requestCode) 启动对话窗口。

然后,当您完成将值添加到数据库并想返回到您的 Activity 时,在对话框中执行:

setResult(RESULT_OK);
finish();

然后回到您的主要 Activity 中,使用 onActivityResult() 更新 TextView :

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
switch (requestCode) {
case your_requestCode: {
//...
DO YOUR STUFF HERE
}
break;
}
}

要从主 Activity 更新 fragment 的 TextView ,您应该实现一个回调接口(interface)。

public interface FragmentCallback {
public void modifyTextView(String text);
}

然后:

FragmentCallback fragCall;

在之前评论过的 onActivityResult 里面:

fragCall.modifyTextView(yourText);

最后在 fragment 上实现回调监听器:

public class YourFragment extends Fragment implements FragmentCallback {

然后在方法中更改 TextView 的文本:

@Override
public void modifyTextView(String text) {
yourTextView.setText(text);
}

关于android - 数据库更新后更新 fragment TextView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24619792/

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