android - 如何在 android Studio 中为我的程序定义回调?
问题描述
我想在 EditActivity 中保存笔记后,在笔记的 Main Activity 更新列表中为 Notebook 程序定义回调,但这不会发生。
编辑活动:
public interface OnClickDoneListener{
void onClickDone();
}
public void setOnClickDoneListener(OnClickDoneListener onClickDoneListener){
this.onClickDoneListener=onClickDoneListener;
}
btnDone.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (extras != null) {
myDatabase.updateRow(id, txtTitle.getText().toString(), txtDesc.getText().toString());
NoteModel noteModel = new NoteModel();
noteModel.setTitle(txtTitle.getText().toString());
noteModel.setDesc(txtDesc.getText().toString());
Intent intent = new Intent(EditActivity.this, MainActivity.class);
startActivity(intent);
onClickDoneListener.onClickDone();
} else {
Done();
}
}
});
主要活动:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
setupViews();
getDataFromDB();
recyclerView.setAdapter(new NoteAdapter(MainActivity.this,dataList));
noteAdapter = new NoteAdapter(MainActivity.this,dataList);
recyclerView.setAdapter(noteAdapter);
fabAdd = (FloatingActionButton)findViewById(R.id.fab_main_add) ;
EditActivity editActivity = new EditActivity();
editActivity.setOnClickDoneListener(new EditActivity.OnClickDoneListener() {
@Override
public void onClickDone() {
noteAdapter.notifyDataSetChanged();
}
});
请帮我。
我的英语很差,对不起。
解决方案
EditActivity editActivity = new EditActivity();
editActivity.setOnClickDoneListener(new EditActivity.OnClickDoneListener() {
@Override
public void onClickDone() {
noteAdapter.notifyDataSetChanged();
}
});
您在这里所做的是在您永远不会使用的 EditActivity 的新实例中设置 OnClickDoneListener 的值。因为当您使用 new Intent(MainActivity.this, EditActivity.class) 启动 EditActivity 时,它将创建一个新的 EditActivity 实例,并且您的界面将为空。
在这种情况下,我建议您使用 android 的广播接收器而不是回调。你所要做的就是:
在 MainActivity 中:您将需要实例化一个广播接收器。您需要在 onCreate 或 onStart 上注册它并在 onStop 或 onDestory 上取消注册它。
在 EditAcitivity 中:每当您想通知 MainActivity 更新列表时,您都会发送广播。
推荐阅读
- python - Pandas,未来警告:使用多个键进行索引
- node.js - solr 添加数组将对象键转换为数组
- javascript - 计算数据库中的数组数量
- powershell - 如何在 Pester 中使用两个互斥参数模拟测试
- reactjs - 有条件地响应本机更改状态
- sql-server - 将使用和加密密码的 SSIS 包从 2008 升级到 2012
- android - 使用 GridLayoutManager 使 RecyclerView 中的某些行具有更少的项目,并具有水平移位
- java - RxJava Single.just 在主线程中
- c++ - 实现 C++ grpc 异步客户端时如何轮询 CompletionQueue?
- amazon-web-services - 删除完整 S3 存储桶 CLI