Android:使用setContentView删除布局集时遇到问题

Android:使用setContentView删除布局集时遇到问题,android,android-layout,android-intent,android-emulator,Android,Android Layout,Android Intent,Android Emulator,正如标题所示,我无法清除/删除/终止使用setContentView设置的布局。当我按下屏幕上的“后退”按钮时,问题就出现了 细节- 从父版面xyz\u parent\u layout,我调用一个方法showMeTheImage(),该方法通过调用setContentView(yzx\u image\u layout)加载图像预览。现在,要返回到xyz\u parent\u布局,请按返回按钮,该按钮将调用parent.removeView(imageview),但什么也没有发生。我还使用了((V

正如标题所示,我无法清除/删除/终止使用setContentView设置的布局。当我按下屏幕上的“后退”按钮时,问题就出现了

细节-

从父版面
xyz\u parent\u layout
,我调用一个方法
showMeTheImage()
,该方法通过调用
setContentView(yzx\u image\u layout)
加载图像预览。现在,要返回到
xyz\u parent\u布局
,请按返回按钮,该按钮将调用
parent.removeView(imageview)
,但什么也没有发生。我还使用了
((ViewManager)imageview.getParent()).removeView(imageview)
,这会清除图像预览,但随后会显示一个空白屏幕

另一个问题是,通过按下imagepreview屏幕上的back硬键,实际上是在父屏幕上处理的

我还想了解如何处理imageView屏幕上的返回硬键按下

不知道发生了什么,非常感谢您的帮助

更新-使用代码

parent = (LinearLayout)mInflater.inflate(R.layout.parent, null);
button = (Button)parent.findViewById(R.id.button_dosomething);
button.setOnClickListener(new View.OnClickListener()
{
    public void onClick(View buttonView)
    {
        showImageView();
    }
});

context.setContentView(parent);

showImageView()
{   
    imagePreview = (RelativeLayout)mInflater.inflate(com.xxx.R.layout.yzx_image_layout,null);
    Button back = (Button)imagePreview.findViewById(com.xxx.R.id.back_button);
    back.setOnClickListener(new View.OnClickListener()
                {
                    public void onClick(View backButton)
                    {
                        //Do something

                    }
                });         
    parent.addView(imagePreview);           
    context.setContentView(parent);         
}
谢谢,
SKU

您认为这是错误的。第二次调用
setContentView()
时,它不会将
layout
设置为
xyz\u parent\u layout.xml
的子级。它将整个屏幕的内容设置为
yzx\u image\u layout

听起来您想要做的是将
yzx\u image\u layout.xml充气,并将其添加到
xyz\u父级布局中的
showMeTheImage()
函数中。然后,当您在父级
layout
上调用
removeView()
时,它将删除该子级

我不知道您到底在做什么,但另一个可能更简单的选择是将图像布局放在单独的
活动中
,然后在函数中启动该
活动
。这样,当您按下后退按钮时,它将从堆栈中删除该
活动
,并返回到您的第一个
活动
,在那里您有
xyz\u父级布局

听起来您不希望它是一个全屏
活动
,因此您可以在
清单.xml中的相应
标记中添加以下行

android:theme="@android:style/Theme.Dialog"
给它一个
对话框
外观

编辑

setContentView(R.layout.parent);   // assuming you have a layout file named parent.xml
parent = (LinearLayout)mInflater.inflate(R.layout.parent, null);
button = (Button)parent.findViewById(R.id.button_dosomething);
startOdometerPic.setOnClickListener(new View.OnClickListener()
{
    public void onClick(View buttonView)
    {
        showImageView();
    }
 });
移除

context.setContentView(parent); 

从您的
showImage()
函数中。

我想我理解您的意思,但要确保-您建议的是执行parent.addView(imageView),然后使用parent.removeView(imageView)清除它。使用其他活动是我在本项目中不愿意使用的。是的,但请确保
imageView
没有父级
布局。如果是这样的话,在将其添加到新的oneHi codeMagic之前,您必须先将其从当前父级中删除,非常感谢您的帮助并采取后续行动。在你的第一个建议之后,我尝试了下面的事情-我膨胀了父布局,然后膨胀了imageview布局,后来将其添加到父布局,然后设置ContentView(父)。但是这画出了一个空白页。调用
setContentView()
然后将第二个
布局充气
,并将其添加到您在
setContentView()中充气的
布局
。调用
setContentView()
膨胀
布局的一种方式。当你最后调用它时,它只是将
布局设置为该方法中的任何内容,而你之前所做的
布局
也不再重要了。CodeMagic,我不确定我是否理解你之前的陈述。根据您的第一条评论,我已经用最新的更改更新了问题。你能看一下并提出相应的建议吗。谢谢