EventBus 里面显示加载框
时间: 2024-01-12 07:04:57 浏览: 65
在EventBus中,可以通过在事件处理方法中发送消息来控制显示和隐藏加载框。具体实现步骤如下:
1. 创建一个自定义的事件类,用于在事件处理方法中发送消息。
```java
public class LoadingEvent {
private boolean isLoading;
public LoadingEvent(boolean isLoading) {
this.isLoading = isLoading;
}
public boolean isLoading() {
return isLoading;
}
}
```
2. 在需要显示加载框的地方,发送一个带有"true"参数的LoadingEvent事件。
```java
EventBus.getDefault().post(new LoadingEvent(true));
```
3. 在需要隐藏加载框的地方,发送一个带有"false"参数的LoadingEvent事件。
```java
EventBus.getDefault().post(new LoadingEvent(false));
```
4. 在Activity或Fragment中注册EventBus,并在事件处理方法中更新UI。
```java
public class MainActivity extends AppCompatActivity {
private ProgressDialog progressDialog;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
progressDialog = new ProgressDialog(this);
progressDialog.setMessage("Loading...");
EventBus.getDefault().register(this);
}
@Subscribe(threadMode = ThreadMode.MAIN)
public void onLoadingEvent(LoadingEvent event) {
if (event.isLoading()) {
progressDialog.show();
} else {
progressDialog.dismiss();
}
}
@Override
protected void onDestroy() {
super.onDestroy();
EventBus.getDefault().unregister(this);
}
}
```
这样,通过在事件处理方法中发送消息,就可以在Activity或Fragment中控制显示和隐藏加载框。同时,由于EventBus是基于发布/订阅模式实现的,不同的组件之间可以轻松地通信,提高了代码的复用性和可维护性。
阅读全文