【问题标题】:Update fragment TextView after database update数据库更新后更新片段 TextView
【发布时间】:2014-07-07 20:59:42
【问题描述】:

我希望在数据库更新完成后更新片段中的文本视图。

我有托管 MainFragment 的 MainActivity

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

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

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

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

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

编辑:

片段是否曾被暂停,或者在 Activity 的对话框关闭后重新创建视图?

【问题讨论】:

  • 为什么不在点击该对话框时设置文本视图值?数据库操作非常快,可以加载并从数据库中再次读取这些数据,直到调用 onResume 方法。

标签: android android-fragments android-sqlite


【解决方案1】:

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

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

setResult(RESULT_OK);
finish();

然后在你的主要活动中使用 onActivityResult() 来更新文本视图:

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

要从主要活动更新片段的文本视图,您应该实现一个回调接口。

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

然后:

FragmentCallback fragCall;

前面注释过的onActivityResult里面的一个:

fragCall.modifyTextView(yourText);

最后你在片段上实现回调监听器:

public class YourFragment extends Fragment implements FragmentCallback {

在方法内部你改变了 textview 的文本:

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

【讨论】:

    【解决方案2】:

    只需重写fragment的onStart方法并调用特定的textView来更新该方法中的文本。

    @Override
    public void onStart() {
        super.onStart();
        textView.setText(/* update method */);
        //TODO call your method here.
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多