如标题所示,我无法清除/删除/删除使用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
答案 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()
函数。