查看不再显示其他活动

时间:2012-03-09 13:47:48

标签: java android android-layout

我制作了一个名为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);

为什么会这样?该怎么办?

1 个答案:

答案 0 :(得分:0)

我认为在这里使用单例设计模式是不正确的。这也是造成问题的原因。一个视图只能有一个父视图,并且在上面的示例中,您将视图扩展为父视图 - 因此在从当前父视图中删除视图之前,您不能再次执行此操作。

在这种情况下,您的单身人士使用会破坏Android框架的灵活性。不要与SDK对抗,让它适合你。