【发布时间】:2019-10-11 08:13:38
【问题描述】:
在我的应用程序中。它首先通过加载一个名为 activity_main.xml 的 .xml 文件开始。然后它将视图更改为一个类(gamedraw)。程序运行后,我希望它加载开始时使用的相同 .xml 文件,但是当我使用 setContentView(R.layout.activity_main); 时它会崩溃;
所以我第一次加载视图时它可以工作,然后我更改视图,然后在程序结束时我希望它再次加载第一个视图,但它崩溃了
public class MainActivity extends Activity {
//declare class Gamedraw
private GameDraw gameDraw;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
gameDraw = new GameDraw(this, size);
//set view to activity main
setContentView(R.layout.activity_main);
}
public void startGame(View v) {
//set view to gamedraw
setContentView(gameDraw);
}
public void setViewActivity(){
setContentView(R.layout.activity_main); //this line crashes the app
}
}
首先它会加载:setContentView(R.layout.activity_main);
第二次加载:setContentView(gameDraw);
第三次加载:setContentView(R.layout.activity_main);
第一个和第二个工作完美,但是当它尝试在最后加载 activity_main 时,应用程序崩溃
【问题讨论】:
-
你在哪里调用这些函数?
-
添加你的 logcat。但是为什么用 3 种不同的方法调用 setContentView 呢?
-
首先它不可能一次又一次地加载相同的视图,您可以重新启动活动以再次加载视图
-
我建议您在同一个活动中使用片段来加载不同的视图。 developer.android.com/guide/components/fragments
-
对应的包含onCreate方法的view就是带有setContentView方法的contractor。重新创建活动以上传新视图。这里出现问题的主要原因是你在错误的时间错误的地方调用了setContentView方法。