簡體   English   中英

從廣播接收器更改片段?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM