Android:无法使用setContentView删除布局集

时间:2013-09-19 16:10:35

标签: android android-layout android-intent android-emulator

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

详细信息 -

从父级布局xyz_parent_layout,我调用方法showMeTheImage(),通过调用setContentView(yzx_image_layout)加载图像预览。现在回到xyz_parent_layout,按下调用parent.removeView(imageview)的后退按钮,但没有任何反应。我还使用了((ViewManager)imageview.getParent()).removeView(imageview),这清除了imagepreview,但之后显示了一个空白屏幕。

另一个问题是,在imagepreview屏幕上按回硬键实际上是在父屏幕上处理的。

我还想了解如何处理在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

1 个答案:

答案 0 :(得分:1)

你在想这个错误。当您第二次致电setContentView()时,不会将layout设为xyz_parent_layout.xml的孩子。它将整个屏幕的内容设置为yzx_image_layout

您想要做的是膨胀yzx_image_layout.xml并将其添加到xyz_parent_layout功能中的showMeTheImage()。然后,当您在父removeView()上致电layout时,它会移除该孩子。

我并不确切知道你在做什么,但另一种选择,可能更容易,就是将你的图像布局放在一个单独的Activity然后在你的函数中开始Activity。这样,当您按下后退按钮时,它会从堆栈中删除Activity并返回到您拥有Activity的第一个xyz_parent_layout

听起来您并不希望全屏Activity,因此您可以将以下行添加到<activity>中相应的manifest.xml标记

android:theme="@android:style/Theme.Dialog"

给它一个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()函数。