我不能在主要活动之外的setContentView()?请阅读

时间:2013-12-29 01:07:32

标签: java android xml

我可以在主类中轻松设置内容视图,而当我在不同的类中设置时,应用程序崩溃。

以下是一个例子:

MainActivity类:

public class MainActivity extends Activity
{
    @Override
    protected void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main); //HERE <-----

            new SecondClass();
    }
}

SecondClass类:

public class SecondClass extends Activity
{
public SecondClass()
{
setContentView(R.layout.activity_info); //HERE <----
}

}

如果你知道为什么会出现这个问题,请说出我和其他人一样。 谢谢,

2 个答案:

答案 0 :(得分:1)

您不能以这种方式创建Activity的新实例,您必须使用intent机制。见这里:http://developer.android.com/training/basics/firstapp/starting-activity.html。然后覆盖SecondActivity的onCreate()方法,调用super和setContentView()。

答案 1 :(得分:1)

constructor中不应该有Activity

public SecondClass(){
setContentView(R.layout.activity_info); //HERE <----
 }

删除它并将其放在onCreate()内,就像你在第一个Activity中一样。

这不是您创建Activity

的新实例的方式
 new SecondClass();

使用Activity创建Intent的实例。

public class MainActivity extends Activity
{
    @Override
    protected void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main); //HERE <-----

         Intent i = new Intent(MainActivity.this, SecondClass.class);
         startActivity(i);
    }
}

我不太确定你在做什么,但你通常不会这样做,因为它会在创建第一个Activity后立即开始。{/ p>