Android:使用setContentView删除布局集时遇到问题
正如标题所示,我无法清除/删除/终止使用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
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,我不确定我是否理解你之前的陈述。根据您的第一条评论,我已经用最新的更改更新了问题。你能看一下并提出相应的建议吗。谢谢