【发布时间】:2016-03-17 23:05:41
【问题描述】:
我在主要活动中使用事件侦听器来确定与数据库的网络连接
//Main Activity
new MyListener() {
if (connected) {
Log.d(TAG,"connected");
Snackbar.make(_current_view_,"Connected to Firebase", Snackbar.LENGTH_SHORT).show();
}
else {
Log.d(TAG,"disconnected");
Snackbar.make(__current_view_, "Disconnected from Firebase", Snackbar.LENGTH_SHORT).show();
}
});
现在,由于这是主活动中的侦听器,因此每次网络连接发生变化时,都会优雅地调用它。但我需要一个视图 应用程序正在呈现的当前活动。
如何获得当前视图?监听器工作并且日志记录是完美的,但是没有调用 Snackbar,因为我们不在主要活动的布局上。但是,当我们这样做时,会显示小吃店。 是否可以获取当前视图的参考?
当我将 SnackBars 替换为 Toasts 时,它们可以完美地与日志协同工作。
Toast.makeText(Login.this, "Connected to Firebase", Toast.LENGTH_SHORT).show(); //Works
我试过了:
getCurrentFocus()
findViewbyId(android.R.id.content)
getWindow().getDecorView()
getWindow().getDecorView().getRootView()
没有,其中一个有效。任何帮助将不胜感激。
【问题讨论】:
-
你能提供更多关于你的架构的信息吗? MainActivity 是 Fragments 的宿主吗?当前视图是什么意思?如果 Activity 不在前台,你如何让 MyListener 的方法工作?
-
好点。侦听器是一个 firebase 数据库侦听器,一旦注册,它就会一直保持到显式删除。它可以跨活动无缝工作。当我使用 Toasts 时,它工作得很好。这只是主要活动,没有任何片段的宿主。
标签: android android-activity global snackbar