首页 > 解决方案 > 调用 setContentView(R.layout.activity_main); 时应用程序崩溃;第二次

问题描述

在我的应用程序中。它首先通过加载一个名为 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 时,应用程序崩溃

标签: javaandroid

解决方案


这是不好的做法,如果您想更改视图但保持在同一个活动中,我建议您为您交换的两个视图使用片段。

理论上应该可以多次setContentview,但它需要你从主线程调用它,这可能是崩溃的原因。但这无关紧要,因为这样做效率非常低。


推荐阅读