假如我对一个view进行了view.setBackgroundResource(R.draw.ic);
现在我想获取我对这个view设置的R.draw.ic的id(int),怎么操作?

解决方案 »

  1.   

    String resTypeName = getResources().getResourceTypeName(R.id.控件);
    String resEntryName = getResources().getResourceEntryName(R.id.控件);
    Context apk = createPackageContext(packageName,
            Context.CONTEXT_IGNORE_SECURITY);
    int drawavleId = apk.getResources().getIdentifier(resEntryName, resTypeName,
    apk.getPackageName());
      

  2.   

    为什么要获得这个id啊,其他地方需要这张图片时,直接用R.draw.ic去调用不就得了
      

  3.   


    因为我的view是动态生成的 在几个图片中随机选了一个图片背景R.drawable.*
    *是什么其实我也不知道 
    所以我想知道 才能进行之后的事情
      

  4.   


    表示没有看懂 
    这是我的代码:
    package com.example.popstar;import java.util.Random;import android.os.Bundle;
    import android.view.View;
    import android.widget.TableLayout;
    import android.widget.TableRow;
    import android.widget.TextView;
    import android.app.Activity;public class MainActivity extends Activity { private TableLayout tableLayout;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    tableLayout = (TableLayout) findViewById(R.id.tablelayout);
    for (int row = 0; row < 10; row++) {
    TableRow tableRow = new TableRow(this);
    for (int col = 0; col < 10; col++) {
    TextView textView = this.new_textview(row,col);
    tableRow.addView(textView);
    }
    tableLayout.addView(tableRow);
    }
    } // 新建TextView
    public TextView new_textview(int row,int col) {
    TextView textView = new TextView(this);
    textView.setId(row*10+col+1);
    textView.setTextAppearance(this, R.style.textview);
    textView.setLayoutParams(new TableRow.LayoutParams(45, 45));
    int random = getRandom(5);
    if (random == 0) {
    textView.setBackgroundResource(R.drawable.red);
    } else if (random == 1) {
    textView.setBackgroundResource(R.drawable.blue);
    } else if (random == 2) {
    textView.setBackgroundResource(R.drawable.green);
    } else if (random == 3) {
    textView.setBackgroundResource(R.drawable.zi);
    } else if (random == 4) {
    textView.setBackgroundResource(R.drawable.yellow);
    }
    textViewOnClick(textView);
    return textView;
    } // 产生一个随机数
    public static int getRandom(int max) {
    return new Random().nextInt(max);
    } // textView鼠标单击事件
    public void textViewOnClick(TextView textView) {
    textView.setOnClickListener(new TextView.OnClickListener(){
    public void onClick(View v){
     // 我想在这里获得我点击的view给他设置的背景图片
    }
    });
    }


    }
      

  5.   

    private int drawable_id;
    if (random == 0) {
        drawable_id = R.drawable.red;
    } else if (random == 1) {
        drawable_id = R.drawable.blue;
    } else if (random == 2) {
        drawable_id = R.drawable.green;
    } else if (random == 3) {
        drawable_id = R.drawable.zi;
    } else if (random == 4) {
        drawable_id = R.drawable.yellow;
    }
    textView.setBackgroundResource(drawable_id);
        // textView鼠标单击事件
        public void textViewOnClick(TextView textView) {
            textView.setOnClickListener(new TextView.OnClickListener() {
                public void onClick(View v) {
                    // view的背景就是drawable_id了。
                }
            });
        }
    这样就可以了。
      

  6.   


    这不是我想要的结果
    设全局变量只能获取的是最后一个view的图片id
    看来我这个情况只能在动态生成后把100个view存放在一个文件里面并设置id和图片背景图片信息需要时根据id去取背景图片信息
    不知道我的这个想法对不对