效果:很多表情小图标(ImageButton),加载进了一个dialog,然后通过监听每个小图表的click在页面中的文本后进行append,目前代码是如下实现的,但无法执行,反射获取ImageButton的ID报错,并提示faceName必须是final类型,很茫然,求指教,分不多,但是我的全部了biaoqButton.setOnClickListener(new OnClickListener() {
     @Override
     public void onClick(View v) {
     //Toast.makeText(TopicDetailActivity.this,"biaoqing", Toast.LENGTH_SHORT).show();
    
     /*View view = LayoutInflater.from(TopicDetailActivity.this).inflate(R.layout.face_dialog, null);
     topicDetail.addView(view);*/
    
     dialog = new Dialog(TopicDetailActivity.this,R.style.UpFace);
         View dialogView = getLayoutInflater().inflate(R.layout.face_dialog, null);
         dialog.setContentView(dialogView);
         dialog.show();
         String faceName="";
         for(int i=1;i<=88;i++){
         faceName="face";
         if(i<10){
         faceName = faceName+"00"+i;
         }else{
         faceName = faceName+"0"+i;
         }
         Field field = R.drawable.class.getDeclaredField(faceName);
             int resourceId = Integer.parseInt(field.get(null).toString());
         ImageButton imFace = (ImageButton)findViewById(resourceId);
         imFace.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
EditText content = (EditText) findViewById(R.id.topic_content);
Toast.makeText(TopicDetailActivity.this,faceName, Toast.LENGTH_SHORT).show();
//content.append(faceName);
}
});
         }      }
    });

解决方案 »

  1.   

    你可以在每一个你需要监听的imagebutton的xml属性里加上相同的tag这个属性然后java里可以用findviewbytag(tag)来获取view,最后一个for循环就行了
      

  2.   

    抱歉,我理解错楼主的意思了,我以为楼主想少写点代码呢。。你可以把要append的文本放在tag里,然后点击的时候读出这个tag就行了
      

  3.   

    已解决
    通过GridView搞定了,反射报错,因为未加异常低级错误,感谢2楼,确实是通过tag拿到的