У меня есть вкладка с общим заголовком на двух вкладках, и я хочу обновить кнопку в общем заголовке - PullRequest
0 голосов
/ 28 января 2019

У меня есть TabLayout с 5 вкладками, в которых две вкладки имеют общий заголовок, и этот макет включен в макеты вкладок.У меня есть button в header_layout, я хочу менять / обновлять изображение кнопки каждые 10 секунд, но wifiIcon.setBackgroundResource(R.drawable.wifiexcellent); не меняя изображение.

   LayoutInflater inflater = (LayoutInflater)   getApplicationContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    View viewHeader = inflater.inflate(R.layout.header_layout, null);
    setWifiIconOnHeader(viewHeader);

 protected void setWifiIconOnHeader(View myView) {
    Button        wifiIcon    =  (Button) myView.findViewById(R.id.wifiIcon);
    wifiIcon.setBackgroundResource(R.drawable.wifiexcellent);
    if (wifiIcon!=null) {
        WifiIndicatorObj = new WifiIndicator(getApplicationContext(), wifiIcon);
    }
}

Как я могу изменить изображение кнопки wifiIcon, это меняется, когда я отлаживаю, но не изменяю в интерфейсе, мне нужно обновить или что я делаю неправильно?

public static void setWifiIcon(Context context, Button wifiIcon) {
    ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo Info = cm.getActiveNetworkInfo();
    if (Info == null || !Info.isConnectedOrConnecting()) {
        wifiIcon.setBackgroundResource(R.drawable.wifinosignal);
        // Log.i("WIFI CONNECTION", "No connection");
    } else {
        int netType = Info.getType();
        if (netType == ConnectivityManager.TYPE_WIFI) {
            WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
            if(wifiManager.isWifiEnabled()){
                if(wifiManager.getWifiState()==WifiManager.WIFI_STATE_ENABLED){
                    //Wifi is enabled
                    int linkSpeed = wifiManager.getConnectionInfo().getLinkSpeed();
                    int rssi = wifiManager.getConnectionInfo().getRssi();
                    //Log.i("WIFI CONNECTION", "Wifi Timer by :"+context.getPackageName()+"Wifi connection speed: "+linkSpeed + " rssi: "+rssi);
                    int normalizedRSSI= normalizeRssi(rssi);
                    if(normalizedRSSI>80){
                        //wIFI Level Very High
                        wifiIcon.setVisibility(View.INVISIBLE);
                        wifiIcon.setBackgroundResource(R.drawable.wifiexcellent);
                        return;
                    }
                    else if (normalizedRSSI>60){
                        //wIFI Level High
                        wifiIcon.setBackgroundResource(R.drawable.wifiverygood);
                        return;

                    }
                    else if (normalizedRSSI>40){
                        //wIFI Level Medium
                        wifiIcon.setBackgroundResource(R.drawable.wifigood);
                        return;

                    }
                    else if (normalizedRSSI>20){
                        ////wIFI Level Low
                        wifiIcon.setBackgroundResource(R.drawable.wifilow);
                        return;

                    }
                    else if (normalizedRSSI>10){
                        ////wIFI Level Very Low
                        wifiIcon.setBackgroundResource(R.drawable.wifiverylow);
                        return;

                    }
                    else{
                        wifiIcon.setBackgroundResource(R.drawable.wifiverylow);
                        return;
                    }

                }
            }
        }
    }
}
...