Java 更改内容视图

Java 更改内容视图,java,android,android-mapview,Java,Android,Android Mapview,在我的应用程序中,基于MapActivity,我希望使用不同的内容视图。一个是谷歌地图视图,另一个是“标准”视图 我的问题很简单: 我使用setContentView(R.layout.myMapView)从地图视图开始:确定 我使用setContentView(R.layout.myOtherView)切换到另一个视图:确定 我再次使用setContentView(R.layout.myMapView)返回地图视图:应用程序崩溃 我做错了什么 提前感谢您花时间来帮助我。为什么您只在一个活动

在我的应用程序中,基于
MapActivity
,我希望使用不同的内容视图。一个是谷歌地图视图,另一个是“标准”视图

我的问题很简单:

  • 我使用
    setContentView(R.layout.myMapView)
    从地图视图开始:确定
  • 我使用
    setContentView(R.layout.myOtherView)
    切换到另一个视图:确定
  • 我再次使用
    setContentView(R.layout.myMapView)
    返回地图视图:应用程序崩溃
我做错了什么


提前感谢您花时间来帮助我。

为什么您只在一个活动中使用两种不同的布局?为什么不根据一个布局使用两个不同的活动


我认为这会更容易处理。

如果您在此处输入更多详细信息,则可以进行评论,但通常在同一活动内切换视图时进行评论 对findviewbyid()的不小心调用可能会创建空指针异常

乙二醇
setContentView(R.layout.myOtherView)之后

若程序试图查找实际存在于
R.layout.myMapView
中的视图,则会得到一个空指针

理想情况下,对于一个活动,setContentView应该只调用一次。很多人都依赖它。例如“findViewById”检查活动布局内的视图。如果继续切换布局,则可能会导致错误。最好继续使用多个具有自己布局的活动。这似乎是个好主意。但我不希望我的活动被推到后堆栈中,也就是说,我希望“back”键关闭整个应用程序,而不仅仅是最后启动的活动。可能吗?是的。只需打开第二个活动,并使用flag\u activity\u CLEAR\u TOP intent.setFlags(intent.flag\u activity\u CLEAR\u TOP)标记即可;嗯,事实上,旗子活动不是我想要的。在阅读了关于任务和活动的《开发人员指南》之后,我得出结论,不可能让back键关闭任务中存在的每个活动。嗯,我没有听你的。使用此标志打开新活动时,它将清除活动堆栈并启动新活动。按下后退键将关闭应用程序。