正如标题所暗示的那样,我在清除/删除/杀死使用setContentView设置的布局时遇到问题。当我按下屏幕上的后退按钮时,可以看到问题。
详-
从父布局xyz_parent_layout
,我调用了一个方法showMeTheImage()
通过调用setContentView(yzx_image_layout)
加载图像预览。现在回到xyz_parent_layout
,按后退按钮,该按钮调用parent.removeView(imageview)
但没有任何反应。我也用过((ViewManager)imageview.getParent()).removeView(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);
}
谢谢货号
你想错了。当您第二次调用setContentView()
时,它不会将该layout
设置为xyz_parent_layout.xml
的孩子。它将整个屏幕的内容设置为 yzx_image_layout
.
听起来您想做的是给yzx_image_layout.xml
充气并将其添加到showMeTheImage()
函数中的xyz_parent_layout
中。然后,当您在父layout
上调用removeView()
时,它将删除该孩子。
我不知道你在做什么,但另一种可能更容易的选择是将您的图像布局放在一个单独的Activity
然后在您的函数中启动该Activity
。这样,当您按下后退按钮时,它将从堆栈中删除该Activity
并返回到您拥有xyz_parent_layout
的第一Activity
。
听起来您不希望这是全屏Activity
因此您可以将以下行添加到manifest.xml
中的相应<activity>
标记中
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()
函数。