如何在Android中调用超类onCreate()方法时在Activity中解析NullPointerException

时间:2012-03-03 00:39:00

标签: android nullpointerexception oncreate

嗨,朋友们我写了一个如下的活动。

SplashScreen.java

public class SplashScreen extends Activity {

protected final int _splashTime = 4000;

public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    setContentView(R.layout.main);
    new Handler().postDelayed(new Runnable() {      
        public void run() {
            startActivity(mainIntent);*/
            Main mainObj=new Main();
            final Bundle bundle=new Bundle();
            mainObj.onCreate(bundle);
            finish();
        }
    }, _splashTime);
   }
}

从上面的Activity iam调用Main.java,如下所示。

public class Main extends Activity{

public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);//line 1.

        setContentView(R.layout.main1);

      }

}

在调用super.onCreate(savedInstanceState)的第1行的上面的Main.java中,我得到了NullPointerException。我已经确定如果我通过使用new运算符创建一个对象来调用Activity,它会给出NullPointerException,如下所示

Main mainObj=new Main();

final Bundle bundle=new Bundle();

mainObj.onCreate(bundle);

但如果我使用

调用活动
startActivity(new Intent(SplashScreen.this,Main.claass));

我没有得到NullPointerException。那么如何通过使用新的opertor创建一个没有NullPointerException的对象来运行一个Activity。

3 个答案:

答案 0 :(得分:1)

  

那么如何通过使用新的opertor创建一个没有NullPointerException的对象来运行一个Activity。

您绝不应尝试使用Activity创建new的实例。这不是Android的工作原理。 Activity类是Android中的一个特例(以及其他一些特殊的Android组件),您需要正确创建和管理它们。

要创建新的Activity,您必须始终创建新的Intent并使用startActivity(...)或其他startActivityXXX(...)方法之一。

请参阅Application Fundamentals

答案 1 :(得分:0)

mainIntent定义在哪里? 在线程中尝试这个:

public void run() {
        Intent mainIntent = new Intent(this, Main.class);
        startActivity(mainIntent);
        finish();
    }

答案 2 :(得分:0)

您将需要使用您似乎已经能够正常工作的startActivity()方法。您不希望直接调用子活动的onCreate()方法。当您调用startActivity时,Android正在为您管理的幕后有很多事情发生。

以下是指向开发者指南的链接:Starting An Activity