[英]Change Fragment from Broadcast Receiver?
我正在嘗試從靜態廣播接收器更新活動中的片段-但它不起作用
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();
}
}
有關getFragmentManager()的問題:
無法從活動類型靜態引用非靜態方法getFragmentManager()
您可以從類定義中刪除static修飾符。
public class NetworkChangeReceiver extends BroadcastReceiver {
這樣,您就可以訪問外部環境,並且如果它是Activity
的實例,則可以訪問getFragmentManager
/ getSupportFragmentManager
。
編輯:
以編程方式注冊您的BroadCast接收器
聲明為成員變量
NetworkChangeReceiver mNetworkChangeReceiver;
的onCreate:
mNetworkChangeReceiver = new NetworkChangeReceiver()
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction("android.net.conn.CONNECTIVITY_CHANGE");
registerReceiver(mNetworkChangeReceiver, intentFilter);
然后onDestroy取消注冊:
unregisterReceiver(mNetworkChangeReceiver);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.