在当前 Activity 中显示 SnackBar
Show SnackBar in current Activity
我有很多活动,并且我在清单中注册了 broadCastReceiver 以检查连接。
当我失去互联网连接时,我想在当前 activity 中显示 Snackbar
我在清单中注册了我的接收器:
<receiver android:name="com.itmind.spac.spacapp.services.ConnectivityChangeReceiver">
<intent-filter>
<action android:name="android.net.conn.CONNECTIVITY_CHANGE"/>
</intent-filter>
</receiver>
在广播中 class:
public class ConnectivityChangeReceiver extends BroadcastReceiver {
@Override
public void onReceive(final Context context, final Intent intent) {
ConnectivityManager cm =(ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
if (cm.getActiveNetworkInfo()!=null){
Toast.makeText(context, "Connected to Internet", Toast.LENGTH_LONG).show();
}
else{
/** I WOULD CREATE A SNACKBAR FOR ALL ACTIVITIES, OR FOR MY CURRENT ACTIVITY */
Toast.makeText(context, "No Connected to Internet", Toast.LENGTH_LONG).show();
}
}
}
如果你打算只在你的一个活动处于活动状态时响应广播,你应该在你的活动中注册和取消注册广播接收器,并且注册/取消注册调用应该出现在匹配的生命周期事件中activity 喜欢 onCreate() / onDestroy()
或 onStart() / onStop()
。
对于具有多个活动的应用程序,一个简单的方法是让每个 activity 扩展一个管理接收器的基础 class,例如这个大纲:
public class MyActivity extends AppCompatActivity {
void onCreate(...) {
// register the receiver here...
}
void onDestroy() {
// unregister the receiver here...
}
}
您还应该使您的连接接收器成为此 activity 的内部 class,并从清单文件中删除接收器声明,因为您现在正在动态注册它。
我有很多活动,并且我在清单中注册了 broadCastReceiver 以检查连接。
当我失去互联网连接时,我想在当前 activity 中显示 Snackbar
我在清单中注册了我的接收器:
<receiver android:name="com.itmind.spac.spacapp.services.ConnectivityChangeReceiver">
<intent-filter>
<action android:name="android.net.conn.CONNECTIVITY_CHANGE"/>
</intent-filter>
</receiver>
在广播中 class:
public class ConnectivityChangeReceiver extends BroadcastReceiver {
@Override
public void onReceive(final Context context, final Intent intent) {
ConnectivityManager cm =(ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
if (cm.getActiveNetworkInfo()!=null){
Toast.makeText(context, "Connected to Internet", Toast.LENGTH_LONG).show();
}
else{
/** I WOULD CREATE A SNACKBAR FOR ALL ACTIVITIES, OR FOR MY CURRENT ACTIVITY */
Toast.makeText(context, "No Connected to Internet", Toast.LENGTH_LONG).show();
}
}
}
如果你打算只在你的一个活动处于活动状态时响应广播,你应该在你的活动中注册和取消注册广播接收器,并且注册/取消注册调用应该出现在匹配的生命周期事件中activity 喜欢 onCreate() / onDestroy()
或 onStart() / onStop()
。
对于具有多个活动的应用程序,一个简单的方法是让每个 activity 扩展一个管理接收器的基础 class,例如这个大纲:
public class MyActivity extends AppCompatActivity {
void onCreate(...) {
// register the receiver here...
}
void onDestroy() {
// unregister the receiver here...
}
}
您还应该使您的连接接收器成为此 activity 的内部 class,并从清单文件中删除接收器声明,因为您现在正在动态注册它。