我制作了一个名为menu的视图。我把它变成了单身人士。这是它的构造函数:
private Menu(Activity cx) {
super(cx);
this.context = cx;
// something = AsyncTaskGetAllStreams.numberOfStreams;
LayoutInflater li = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
li.inflate(R.layout.menu, this, true);
setActivity(cx);
initUI();
initUI(MyStreamsActivity.streamsJoinedByUser2.length);
assignVal();
}
我遇到的问题是,一旦设置了此布局的活动,它就会在该活动上显示,而在其他任何活动上,它会在LogCat中告诉我:
java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.
作为参考,它的堆栈跟踪从我的按钮的onClick()
开始。这是我在onClick()
Intent intent = new Intent(activity, MyPostActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
activity.startActivity(intent);
为什么会这样?该怎么办?
答案 0 :(得分:0)
我认为在这里使用单例设计模式是不正确的。这也是造成问题的原因。一个视图只能有一个父视图,并且在上面的示例中,您将视图扩展为父视图 - 因此在从当前父视图中删除视图之前,您不能再次执行此操作。
在这种情况下,您的单身人士使用会破坏Android框架的灵活性。不要与SDK对抗,让它适合你。