0

我像这样向我的 TableL 添加一些按钮

TableLayout table = (TableLayout) findViewById( R.id.tableLayout1 );
   Bitmap bmp = BitmapFactory.decodeFile(Environment.getExternalStorageDirectory()+ myPrefLocalMedia + mat_foto);

   final ImageButton b = new ImageButton(this);
   b.setScaleType(ImageView.ScaleType.FIT_CENTER);
   b.setAdjustViewBounds(true);
   b.setImageBitmap(bmp);
   b.setOnClickListener(new View.OnClickListener() {
      public void onClick(View v) {
         ProgressDialog progressDialog = new ProgressDialog(SuperlineaActivity.this);
         progressDialog.setMessage("Realizando el pedido...");
         progressDialog.setCancelable(false);
         b.setPressed(true);
         if ( (miPedido == null) || ( miPedido.isEnproceso()==false) ) {
            Log.e("log_","Hago post! Creo pedido!!");
            Hacerpost eginpost = new Hacerpost(SuperlineaActivity.this, progressDialog);
            eginpost.execute(myPrefApiPeticionMaterial,mat_id, PUESTOID, LINEAID, USUARIOID, PRODUCTOID);
         } else {
            Hacerput puttask = new Hacerput(SuperlineaActivity.this, progressDialog);
            puttask.execute(myPrefApiPeticionMaterial,miPedido.getId());
         }
      }
   });

row.addView( b, 300,300 );

当它被按下时,它会执行一些 AsyncTask (HttpPost) 并返回一个颜色代码。我需要使用该颜色代码更改按下的背景颜色,但我怎么知道我点击了女巫按钮?

这是我接收 HttpPost 数据的函数:

    @TargetApi(Build.VERSION_CODES.JELLY_BEAN)
    public void erantzuna(JSONObject myJson) {
        if ( miPedido == null ) {
            AlertDialog alerta   = new AlertDialog.Builder(SuperlineaActivity.this).create();
            alerta.setTitle("PEDIDO EN PROCESO");
            alerta.setMessage("El pedido se a procesado. Espera.");
            alerta.setButton("OK", new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int which) {
                    Toast.makeText(getApplicationContext(), "Registrado", Toast.LENGTH_SHORT).show();
                }
            });
            alerta.show();
            String kolorea = null;
            String pedidoid = null;
            try {
                kolorea = myJson.getString("kolorea");
                pedidoid = myJson.getString("pedidoid");
            } catch (JSONException e) {
                e.printStackTrace();
            }
            Log.e("log_", "Bueltan da: => " + kolorea);
            Log.e("log_", "Bueltan da: => " + pedidoid);
            miPedido = new Pedido(pedidoid, kolorea);


            try {
                if (miPedido.getKolorea().equals("kuadro-gorria")) {
                  //
                  // Here I need to change the pressed ImageButton color to RED
                  //
                } elseif ( miPedido.getKolorea().equals("kuadro-urdina")) {
                  //
                  // Here I need to change the pressed ImageButton color to BLUE
                  //
                } else {
                  //
                  // Here I need to change the pressed ImageButton color to transparent
                  //
                }
            } catch (Exception e) {
                Log.e("log_","Boton Color => " + e.toString());
            }


        } else {
            miPedido = null;
        }
    }

任何帮助或线索?提前致谢

4

1 回答 1

0

也许您应该管理动态添加的按钮,例如将它们放入列表中,或者,如果您以后不需要它们的引用,只需将 Button 提供给 asyncTask (例如在构造函数中或其他东西中)并更改其颜色asynctask 的 onPostExecute 方法。但是不要忘记为诸如 Activity 在任务等待响应时被破坏等情况做准备,因为在这种情况下 Button 将不再存在,这也可能导致内存泄漏。

于 2013-05-23T14:14:39.810 回答