我注意到我在代码中这样做了:
ResultButton = new Button( theActivity );
ButtonUtils.setButtonValues( ... );
((ViewGroup) (theActivity).findViewById( android.R.id.content )).addView( ResultButton );
ResultButton.setOnClickListener( new OnClickListener()
{
@Override
public void onClick(View arg0) {
doStuff();
((ViewGroup) (getActivity()).findViewById( android.R.id.content )).removeView( ResultButton );
}
});
这似乎显然是错误的,要在其OnClickListener中删除它自己。但是处理这些事情的正确方法是什么。由于Android程序中没有主要方法,我不能只设置一个标志,然后让它稍后处理它。 你永远不会真的删除东西?你只是将它们设置为隐形?
答案 0 :(得分:3)
在onClick
实现中,您没有重命名的参数对应于触发事件的视图,您可以调用所述视图的父级并询问 it 删除所说的子视图。
ViewGroup parentView = (ViewGroup) view.getParent();
parentView.removeView(view);
要执行此操作,请将arg0
重命名为view
,您应该没问题
<小时/> 正如您所提到的,另一个选项是将
setVisibility
方法的可见性切换为View.GONE
或View.INVISIBLE
,具体取决于您是否希望继续占用其占用的屏幕空间当可见或完全消失时,但由于您要求删除视图,第一个选项就足够了。