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

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

如何在AsyncTask中調用fragment?

如何在AsyncTask中調用fragment?

鳳凰求蠱 2023-07-13 18:14:11
我有辦法每 15 秒測試一次互聯網連接。如果設備有互聯網連接,則不需要任何東西,但如果您沒有互聯網連接,我想調用 Fragment。崩潰。如果我無法從 AsyncTask 中調用片段,我可以從 MainActivity 中調用它。我不知道怎么做。檢查InternetAsyncTask.classpublic class CheckInternetAsyncTask extends AsyncTask<Void, Integer, Boolean> {private MainActivity activity;    private Context context;    public CheckInternetAsyncTask(Context context) {        this.context = context;    }    @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;        }    }    @Override    protected void onPostExecute(Boolean result) {        super.onPostExecute(result);        //Log.d("TAG", "result" + result);        if(result){            // do ur code            Toast.makeText(context,"Device is connected to internet.", Toast.LENGTH_LONG).show();        }        else {            Toast.makeText(context,"Device is not connected to internet!",Toast.LENGTH_LONG).show(); EthernetControlFragment ethernetControlFragment = EthernetControlFragment.newInstance();        ethernetControlFragment.show(activity.getSupportFragmentManager(), "ethernet");        ethernetControlFragment.setCancelable(false);        }    }}
查看完整描述

2 回答

?
滄海一幻覺

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

activity您從未設置異步任務的屬性。


你 AsyncTask 的構造函數應該是:


public CheckInternetAsyncTask(Activity activity) {

   this.context = activity.getApplicationContext();

   this.activity = activity;

}


并將您的任務稱為:


new CheckInternetAsyncTask(MainActivity.this).execute();


查看完整回答
反對 回復 2023-07-13
?
白衣染霜花

TA貢獻1796條經驗 獲得超10個贊

在 Giorgos 代碼的基礎上,嘗試這個小改動:


    public CheckInternetAsyncTask(AppCompatActivity activity) {

        this.context = activity.getApplicationContext();

        this.activity = activity;

    }


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

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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