嗨,朋友们我写了一个如下的活动。
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。
答案 0 :(得分:1)
那么如何通过使用新的opertor创建一个没有NullPointerException的对象来运行一个Activity。
您绝不应尝试使用Activity
创建new
的实例。这不是Android的工作原理。 Activity
类是Android中的一个特例(以及其他一些特殊的Android组件),您需要正确创建和管理它们。
要创建新的Activity
,您必须始终创建新的Intent
并使用startActivity(...)
或其他startActivityXXX(...)
方法之一。
答案 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