调用setContentView(R.layout.activity_main)时应用崩溃第二次

时间:2019-10-11 08:13:38

标签: java android

在我的应用中。首先通过加载一个名为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);

第3次加载:setContentView(R.layout.activity_main);

第一个和第二个工作正常,但是当尝试最后加载activity_main时,应用程序崩溃

1 个答案:

答案 0 :(得分:0)

这是不切实际的做法,如果您想更改视图但仍处于同一活动中,我建议您为在两个视图之间交换的片段使用片段。

理论上应该可以多次设置setContentview,但是它要求您从主线程调用它,这可能是崩溃的原因。但这无关紧要,因为以这种方式执行效率极低。