【问题标题】:Notifying data change from one activity to another通知数据从一项活动更改为另一项活动
【发布时间】:2013-07-30 08:42:13
【问题描述】:

我有问题。我有两个活动(MainActivity,EditAccount)。 在 MainActivity 我从数据库编译了一个列表视图。 在 EditActivty 中,我将数据更新到数据库中,并在数据发生更改后立即返回 MainActivity:

    public class EditAccount extends Activity {
    ......
    ......


    public void update_acc(View view){

    EditText accName=(EditText)findViewById(R.id.acc_name);
    EditText comment=(EditText)findViewById(R.id.comments);
    String acc_name=accName.getText().toString();
    String comments=comment.getText().toString();
    Intent intent=getIntent();
    int id = (int) intent.getExtras().getLong("data_id"); 
    String data_id= Integer.valueOf(id).toString();

    datasource.updateEvent(acc_name, comments, data_id);
    datasource.close();

    Toast.makeText(getBaseContext(), "Account updated; Acc_name:"+acc_name+", Comment:"+comments, Toast.LENGTH_LONG).show();

    super.onBackPressed();
}

问题是当 Activity 重定向回 MainActivity 时,ListView 中的数据没有更新。那么,如何通知 ListView 数据已更改? 请帮忙。 提前致谢, 等待您的回复...

【问题讨论】:

    标签: java android android-intent android-listview


    【解决方案1】:

    问题是您可能正在从onCreate() 内的数据库中填充 ListView。因此,解决方案是用onResume() 中的数据库填充ListView,这将从数据库中获取更新的数据。

    因为当您返回 MainActivity 时,它的 onResume() 将被调用,因此只需将用于从数据库中获取数据的代码放在 onResume() 中而不是 onCreate() 中并更新您的 ListView。

    【讨论】:

    • 你能告诉我如何在 onResume() 方法中执行 Oncreate() 方法。
    • 不需要这样做,只需将您的代码用于从数据库中获取数据并在 onResume() 中设置适配器即可
    【解决方案2】:

    在 onResume() 而不是 onCreate() 中设置数据

    请完成完整的活动生命周期。

    https://developer.android.com/guide/components/activities/activity-lifecycle

    【讨论】:

      【解决方案3】:

      添加这个youradapter.notifyDataSetChanged();

      【讨论】:

      • 它不会工作。我必须从一项活动通知另一项活动
      • 只有当适配器出现在那个活动中时,这个代码才会执行​​它
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-03
      • 2014-09-19
      • 1970-01-01
      • 1970-01-01
      • 2012-11-29
      • 1970-01-01
      相关资源
      最近更新 更多