I am trying to update a fragment in my activity from a static broadcast receiver - but it doesnt work
public static class NetworkChangeReceiver extends BroadcastReceiver {
@Override
public void onReceive(final Context context, final Intent intent) {
FragmentManager fm = getFragmentManager();
FragmentTransaction fragmentTransaction = fm.beginTransaction();
fragmentTransaction.replace(R.id.container, new Fragment1());
fragmentTransaction.commit();
}
}
there is a problem about getFragmentManager():
Cannot make a static reference to the non-static method getFragmentManager() from the type Activity
you can remove the static modifier from the class definition.
public class NetworkChangeReceiver extends BroadcastReceiver {
this way you have access to the outer environment, and, if it is an instance of Activity
, you can access getFragmentManager
/ getSupportFragmentManager
.
Edit:
To register your BroadCast receiver programmatically
Declare as member variable
NetworkChangeReceiver mNetworkChangeReceiver;
onCreate:
mNetworkChangeReceiver = new NetworkChangeReceiver()
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction("android.net.conn.CONNECTIVITY_CHANGE");
registerReceiver(mNetworkChangeReceiver, intentFilter);
and onDestroy unregister it:
unregisterReceiver(mNetworkChangeReceiver);
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.