2012-03-03 4 views
1

こんにちは友人私は以下のようなアクティビティを作成しました。AndroidでスーパークラスのonCreate()メソッドを呼び出すときに、アクティビティでNullPointerExceptionを解決する方法

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); 
    } 
} 

上記活動から次のようになるMain.javaを呼び出すIAM。ライン1にMain.java上記で

public class Main extends Activity{ 

public void onCreate(Bundle savedInstanceState) { 

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

     setContentView(R.layout.main1); 

     } 

} 

super.onCreate(savedInstanceState)を呼び出している間IAM NullPointerException.I iは新しい演算子を使用してオブジェクトを作成することによって、アクティビティを呼び出す場合、それはにNullPointerExceptionなどを与えていることを同定し得ます私はNullPointerException。だからを得ていない

startActivity(new Intent(SplashScreen.this,Main.claass)); 

IAMを使用して活動を呼び出す場合

Main mainObj=new Main(); 

final Bundle bundle=new Bundle(); 

mainObj.onCreate(bundle); 

下回っしかし、どのように私はAを実行することができます新しいオペレータを使用してオブジェクトを作成して、NullPointerExceptionを使用してオブジェクトを作成します。

答えて

1

したがって、NullPointerExceptionを使用せずに新しいオペレータを使用してオブジェクトを作成すると、アクティビティを実行できます。

newを使用してActivityのインスタンスを作成しないでください。これはAndroidの仕組みではありません。 ActivityクラスはAndroidの特別なケースです(他のいくつかの特別なAndroidコンポーネントと一緒に)、それらを正しく作成して管理する必要があります。あなたは、常に新しいIntentを作成し、startActivity(...)または他のstartActivityXXX(...)のいずれかの方法を使用しなければならない新しいActivityを作成するには

はmainIntentが定義されているApplication Fundamentals

+0

応答MisterSquonkありがとうございます。 – user1195614

+0

@ user1195614:ようこそ。 Androidで使用されるほとんどのクラスは、Javaクラスと同じように扱うことができますが、コアアプリケーションコンポーネント(「Activity」など)を別々に扱う必要があります。そのリンクをブックマークしてください - 非常に便利です。 – Squonk

0

を参照してください? スレッドでこれを試してみてください:

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

MisterSquonkはそれをうまく説明しました。アクティビティはクラスと同じではありません。彼が投稿したFundamentalsリンクを参照してください。 –

+0

Stuに感謝します。 – user1195614

0

あなたはすでに働いて得ることができるように思わstartActivity()メソッドを使用したいと思うでしょう。サブアクティビティのonCreate()メソッドを直接呼び出す必要はありません。 startActivityを呼び出すと、Androidがあなたのために管理しているシーンの背後には多くのことが起こっています。

ここに、開発者ガイドへのリンクがあります。

関連する問題