0

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

细节 -

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

另一个问题是,通过在图像预览屏幕上按回硬键实际上是在父屏幕上处理的。

我还想了解如何在 imageView 屏幕上处理 Back hard key press。

不知道发生了什么,非常感谢任何帮助。

更新 - 使用代码

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

4

1 回答 1

1

你在想这个错误。当您setContentView()第二次调用时,它不会将其设置layoutxyz_parent_layout.xml. 它将整个屏幕的内容设置为yzx_image_layout.

听起来您想要做的是膨胀yzx_image_layout.xml并将其添加到您xyz_parent_layoutshowMeTheImage()函数中。然后当你打电话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()功能。

于 2013-09-19T16:14:03.917 回答