android简单问题大家都看看(重谢)

码密码密哄 2011-06-22 05:42:55
运行的时候插入第二个表情的时候老报错,错误:
ERROR/AndroidRuntime(7458): java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first. 告诉帮忙解决一下

public class MainActivity extends Activity {
private static String TAG="MainActivity";
private Button expressionButton;
private LayoutInflater inflater;
private GridView mGridView;
private EditText et;
private Dialog dialog;
private int[]face=new int[]
{ R.drawable.smiley_b_close,R.drawable.smiley_colon_apostrophe_open,
R.drawable.smiley_colon_close,R.drawable.smiley_colon_d,
R.drawable.smiley_colon_dollar,R.drawable.smiley_colon_e,
R.drawable.smiley_colon_o,R.drawable.smiley_colon_open,
R.drawable.smiley_colon_p,R.drawable.smiley_colon_pipe,
R.drawable.smiley_colon_s,R.drawable.smiley_colon_slash,
R.drawable.smiley_colon_star,R.drawable.smiley_colon_three,
R.drawable.smiley_colon_x,R.drawable.smiley_greater_than_colon_open,
R.drawable.smiley_kik,R.drawable.smiley_less_than_slash_three,
R.drawable.smiley_less_than_three,R.drawable.smiley_semicolon_close
};
private ImageGetter imageGetter = new ImageGetter() {

@Override
public Drawable getDrawable(String source) {
int id = Integer.parseInt(source);
Drawable draw = getResources().getDrawable(id);
draw.setBounds(0, 0, draw.getIntrinsicWidth(), draw.getIntrinsicHeight());
return draw;
}
};
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

et=(EditText) findViewById(R.id.EditText1);
expressionButton = (Button) findViewById(R.id.expressionButton);
inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View layout = inflater.inflate(R.layout.customdialog, null);
mGridView = (GridView) layout.findViewById(R.id.gridview);
mGridView.setAdapter(new ImageAdapter(MainActivity.this));

expressionButton.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {
// MyDialog myDialog = new MyDialog(MainActivity.this);
// myDialog.show();
dialog =new Dialog(MainActivity.this);
dialog.setContentView(mGridView);
dialog.setTitle("表情选择");
dialog.show();
}
});
mGridView.setOnItemClickListener(new OnItemClickListener() {

@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int position,
long id) {
alertFace(position);
}
public void alertFace(int position) {
et.append(Html.fromHtml("<img src='"+face[position]+"'/>",imageGetter,null));
//e_text = et.getText().toString();
dialog.dismiss();
}
});

}
@Override
protected void onStart() {
super.onStart();
}
}
...全文
243 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
码密码密哄 2011-06-22
  • 打赏
  • 举报
回复
搞定了 dialog没判断 加上
if(dialog!=null) {
dialog.show();
}else {
new ...
}
fontlose 2011-06-22
  • 打赏
  • 举报
回复
也有可能在这里
dialog =new Dialog(MainActivity.this);
dialog.setContentView(mGridView);
试试重新new个实例加进去
fontlose 2011-06-22
  • 打赏
  • 举报
回复
The specified child already has a parent. You must call removeView() on the child's parent first

根据提示一个子控件不能有两个parent

问题在这里。
public Drawable getDrawable(String source) {
int id = Integer.parseInt(source);
Drawable draw = getResources().getDrawable(id);
draw.setBounds(0, 0, draw.getIntrinsicWidth(), draw.getIntrinsicHeight());
return draw;
}


challenge99 2011-06-22
  • 打赏
  • 举报
回复
public void onClick(View v) {
// MyDialog myDialog = new MyDialog(MainActivity.this);
// myDialog.show();
dialog =new Dialog(MainActivity.this);
dialog.setContentView(mGridView);
dialog.setTitle("表情选择");
dialog.show();
}
});
感觉问题出在这里, dialog 不是局部的嘛, 为啥每次都去new呢? dialog.setContentView()这个需要?
码密码密哄 2011-06-22
  • 打赏
  • 举报
回复
图片怎么发不了 晕 来点人帮忙解决下啊 做过聊天软件的都懂的 帮忙改改
码密码密哄 2011-06-22
  • 打赏
  • 举报
回复
发效果图

点击表情按钮可以加第一个表情

但是第二次点击表情按钮就不行了

80,351

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧