亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

AsyncTask 中的 DialogFragment 未關閉

AsyncTask 中的 DialogFragment 未關閉

明月笑刀無情 2023-07-19 14:54:00
我有辦法每 15 秒檢查一次互聯網連接。如果沒有互聯網連接,該方法將調用dialogfragment。到目前為止,它運行得很好。建立互聯網連接后,我無法關閉dialogFragment。Logcat 沒有給出錯誤?!癲ialogfragment dissmis”不起作用,dialogfragment 仍保留在屏幕上。首先,我斷開與互聯網的連接并調用dialogFragment。隨后互聯網連接正在運行并且“設備已連接到互聯網”。我看到文字了。但對話框片段并沒有消失。檢查InternetAsyncTask.classpublic class CheckInternetAsyncTask extends AsyncTask<Void, Integer, Boolean> {    Activity activity;    private Context context;    public CheckInternetAsyncTask(Activity activity) {        this.context = activity.getApplicationContext();        this.activity = activity;    }    @Override    protected Boolean doInBackground(Void... params) {        ConnectivityManager cm =                (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);        assert cm != null;        NetworkInfo activeNetwork = cm.getActiveNetworkInfo();        boolean isConnected = activeNetwork != null &&                activeNetwork.isConnected();        if (isConnected) {            try {                InetAddress ipAddr = InetAddress.getByName("google.com");                //You can replace it with your name                return !ipAddr.equals("");            } catch (Exception e) {                Log.e("TAG", "Error checking internet connection"+ e.getMessage());                return false;            }        } else {            //Log.d("TAG", "No network available!");            return false;        }    }
查看完整描述

2 回答

?
慕尼黑5688855

TA貢獻1848條經驗 獲得超2個贊

好的,我會在這里詳細解釋。

15 秒前您使用下面的行創建了一個對話框,我們稱之為object1

EthernetControlFragment.newInstance()

然后 15 秒后,您再次object2使用上面的行創建一個新對話框,當您關閉它時,您也關閉了這個新對話框object2。不幸的是,您沒有保留舊對話框的參考,dialog1這是真正的問題。

解決方案是僅創建一個對象,因此創建類的全局引用EthernetControlFragment并僅在其為空時才對其進行初始化。這樣你就只有一個對話框。


查看完整回答
反對 回復 2023-07-19
?
滄海一幻覺

TA貢獻1824條經驗 獲得超5個贊

我解決了我的問題。調用片段如下:


    Fragment prev = ((FragmentActivity) activity).getSupportFragmentManager().findFragmentByTag("ethernet");

    if (prev == null) {

        ethernetControlFragment.show(((FragmentActivity) activity).getSupportFragmentManager(), "ethernet");

        ethernetControlFragment.setCancelable(false);

    }

并像這樣解雇:


Fragment prev = ((FragmentActivity) activity).getSupportFragmentManager().findFragmentByTag("ethernet");

            if (prev != null) {

                EthernetControlFragment df = (EthernetControlFragment) prev;

                df.dismiss();

            }

我認為這些方法是調用和消除片段最可靠的方法。


查看完整回答
反對 回復 2023-07-19
  • 2 回答
  • 0 關注
  • 160 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號