Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/196.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android setCompoundDrawableWithIntrinsicBounds没有绘制任何东西…但只是有时候_Android_Android Drawable - Fatal编程技术网

Android setCompoundDrawableWithIntrinsicBounds没有绘制任何东西…但只是有时候

Android setCompoundDrawableWithIntrinsicBounds没有绘制任何东西…但只是有时候,android,android-drawable,Android,Android Drawable,我以编程方式创建了一些按钮,我以这种方式添加按钮: final Button btn = new Button(this); btn.setText(array.get(i)); btn.setTextSize(10); btn.setTextColor(getColor(R.color.white)); btn.setOnClickLi

我以编程方式创建了一些按钮,我以这种方式添加按钮:

final Button btn = new Button(this);
                    btn.setText(array.get(i));
                    btn.setTextSize(10);
                    btn.setTextColor(getColor(R.color.white));
                    btn.setOnClickListener(new View.OnClickListener() {
                        @Override
                        public void onClick(View v) {
                            goToModule(texto);
                        }
                    });
                    btn.setHeight(height);
                    btn.setWidth(width);
                    btn.setOnTouchListener(parentListener);
                    btn.post(new Runnable() {
                        @Override
                        public void run() {
                            btn.setCompoundDrawablesWithIntrinsicBounds(null,getDrawableForText(texto),null, null);
                            btn.setPadding(0,35,0,0);
                            btn.setBackground(gd);
                            btn.setLayoutParams(params);
                        }
                    });

                    row1.addView(btn);
最多可绘制19个按钮。它们位于ViewFlippers中,因此用户可以在页面之间翻页

getDrawableForText方法:

private Drawable getDrawableForText(String texto) {
    Drawable drawable=null;
    if(texto.equalsIgnoreCase("Viajes")){
        Log.i("LOG", "This drawable is the problematic one");
    }
    if (texto.equals(textosBotones[0])) {
        drawable=getResources().getDrawable(R.drawable.vuelo,getTheme());//Viajes

    } else if (texto.equals(textosBotones[1])) {
        drawable=getResources().getDrawable(R.drawable.hotel,getTheme());//Hotel

    } else if (texto.equals(textosBotones[2])) {
        drawable=getResources().getDrawable(R.drawable.agenda,getTheme());//Agenda
        /*int h = btn.getHeight()-100;
        int w = btn.getWidth()-100;
        drawable.setBounds( 0, 0, w, h );
        Bitmap icon= BitmapFactory.decodeResource(getResources(),R.drawable.agenda);
        Bitmap newbitMap = Bitmap.createScaledBitmap(icon,w,h, true);
        dr = new BitmapDrawable(EventActivity.this.getResources(), newbitMap);*/

    } else if (texto.equals(textosBotones[3])) {
        drawable=getResources().getDrawable(R.drawable.ponentes,getTheme());//Ponentes


    } else if (texto.equals(textosBotones[4])) {
        drawable=getResources().getDrawable(R.drawable.documentos,getTheme());//Documentos


    } else if (texto.equals(textosBotones[5])) {
        drawable=getResources().getDrawable(R.drawable.ubicacion,getTheme());//Ubicaciones


    } else if (texto.equals(textosBotones[6])) {
        drawable=getResources().getDrawable(R.drawable.contactos,getTheme());//Contactos


    } else if (texto.equals(textosBotones[7])) {
        //drawable=getResources().getDrawable(R.drawable.preguntas,getTheme());//Encuestas
        drawable=getResources().getDrawable(R.drawable.valoracion,getTheme());//Encuestas/valoraciones

    } else if (texto.equals(textosBotones[8])) {
        drawable=getResources().getDrawable(R.drawable.qr,getTheme());//Distintivo/best business


    } else if (texto.equals(textosBotones[9])) {
        drawable=getResources().getDrawable(R.drawable.info,getTheme());//Forum

    } else if (texto.equals(textosBotones[10])) {
        drawable=getResources().getDrawable(R.drawable.galeria,getTheme());//Galería


    } else if (texto.equals(textosBotones[11])) {
        drawable=getResources().getDrawable(R.drawable.chat,getTheme());//Chats


    } else if (texto.equals(textosBotones[12])) {
        drawable=getResources().getDrawable(R.drawable.muro,getTheme());//Muro


    } else if (texto.equals(textosBotones[13])) {
        drawable=getResources().getDrawable(R.drawable.asistentes,getTheme());//Asistentes


    } else if (texto.equals(textosBotones[14])) {
        drawable=getResources().getDrawable(R.drawable.twitter,getTheme());//Twitter


    } else if (texto.equals(textosBotones[15])) {
        drawable=getResources().getDrawable(R.drawable.twitter,getTheme());//Facebook


    } else if (texto.equals(textosBotones[16])) {
        drawable=getResources().getDrawable(R.drawable.twitter,getTheme());//Instagram


    } else if (texto.equals(textosBotones[17])) {
        drawable=getResources().getDrawable(R.drawable.qr,getTheme());//QR


    } else if (texto.equals(textosBotones[18])) {
        drawable=getResources().getDrawable(R.drawable.valoracion,getTheme());//Proveedores


    } else if (texto.equals(textosBotones[19])){
        /*drawable = DrawableCompat.wrap(getResources().getDrawable(R.drawable.trophy,getTheme()));
        DrawableCompat.setTint(drawable, getColor(R.color.white));*/
        /*drawable=getResources().getDrawable(R.drawable.trophy,getTheme());
        Drawable wrappedDrawable = DrawableCompat.wrap(drawable);
        DrawableCompat.setTint(wrappedDrawable, getColor(R.color.white));
        drawable=wrappedDrawable;*/
        drawable=getResources().getDrawable(R.drawable.actividad, getTheme());//Actividades
    }else if(texto.equals(textosBotones[20])){
        drawable=getResources().getDrawable(R.drawable.noticias,getTheme());
    }else{
        Log.i("LOG", "Something weird happened");
    }
    return drawable;
}
我第一次进入此活动时,已正确绘制了可绘制表格。但是,如果我单击其中一个按钮(转到另一个活动),在新活动中,我单击转到第三个活动的按钮,如果我返回到主活动(按钮所在的位置),有一个可绘制的按钮没有绘制,它总是相同的,第一个。其余按钮的其余可绘制按钮均绘制为ok

不再重新创建主活动,它将保留在内存中。不管怎样,如果我再画一次,同样的奇怪行为也会发生

我很迷茫,因为第三个活动对第一个活动没有任何影响

有人能告诉我发生了什么

多谢各位

如果你需要更多的细节,请告诉我

编辑:

在第三个活动中,我做了如下工作:

private void getArrivalsFromJSON(String resp) {
    arrivals=new ArrayList<>();
    ArrivalModel all=new ArrivalModel();
    all.setDestination("");
    all.setTerminal("ALTTODO");
    all.setType("");
    arrivals.add(all);
    try {
        JSONObject json=new JSONObject(resp);
        JSONArray data=json.getJSONArray("data");
        for(int i=0;i<data.length();i++){
            JSONObject obj=data.getJSONObject(i);
            ArrivalModel arrival=new ArrivalModel();
            arrival.setDestination(obj.getString("destination"));
            arrival.setTerminal(obj.getString("terminal"));
            arrival.setType(obj.getString("type"));
            arrivals.add(arrival);
        }
        generateLayout();
    } catch (JSONException e) {
        e.printStackTrace();
    }

}
for(int i=0;i<data.length()-7;i++)
private void getArrivalsFromJSON(字符串resp){
arrivals=新的ArrayList();
ArrivalModel all=新到达的模型();
全部。设置目的地(“”);
全部。setTerminal(“ALTTODO”);
all.setType(“”);
到达。添加(全部);
试一试{
JSONObject json=新的JSONObject(resp);
JSONArray data=json.getJSONArray(“数据”);

对于(int i=0;i我发现了错误。与内存或其他性能问题无关

发生的事情是,在第三个活动中,我使用了我在按钮中使用的相同.png,但我改变了它的颜色:

d.setColorFilter(new PorterDuffColorFilter(Color.parseColor(color), PorterDuff.Mode.MULTIPLY));

因此,当我返回到第一个活动,并试图绘制可绘制表格时,它正在绘制,但颜色发生了变化。鉴于按钮颜色和我正在更改可绘制表格的颜色相同,似乎无法绘制可绘制表格;事实上,它正在绘制,但不可见。

我发现了错误。否t与内存或其他性能问题有关

发生的事情是,在第三个活动中,我使用了我在按钮中使用的相同.png,但我改变了它的颜色:

d.setColorFilter(new PorterDuffColorFilter(Color.parseColor(color), PorterDuff.Mode.MULTIPLY));
所以,当我回到第一个活动中,试图绘制可绘制图形时,它正在绘制,但颜色发生了变化。考虑到按钮的颜色,以及我更改可绘制图形时使用的颜色是相同的,看起来可绘制图形没有被绘制;事实上,它正在绘制,但不可见