4

MainActivity からアクティビティを開始したいのですが、oncreate メソッドでは開始したくありません。

public void awe()
{
    Intent myIntent = new Intent(MainActivity.this, Awesome.class);
    MainActivity.this.startActivity(myIntent);
}

別のクラスがメソッド awe() を呼び出すと、クラッシュが発生し、

05-25 04:06:51.034: E/AndroidRuntime(7161): FATAL EXCEPTION: main
05-25 04:06:51.034: E/AndroidRuntime(7161): java.lang.NullPointerException
05-25 04:06:51.034: E/AndroidRuntime(7161):     at android.content.ContextWrapper.getPackageName(ContextWrapper.java:151)
05-25 04:06:51.034: E/AndroidRuntime(7161):     at android.content.ComponentName.<init>(ComponentName.java:106)
05-25 04:06:51.034: E/AndroidRuntime(7161):     at android.content.Intent.<init>(Intent.java:2895)
05-25 04:06:51.034: E/AndroidRuntime(7161):     at package name.MainActivity.awe(MainActivity.java:215)

誰かが私に何ができるか知っていますか?

主な活動

public class MainActivity extends Activity implements OnClickListener { 
// (variable stuff)
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

          buttonE = (Button) findViewById(R.id.buttonEASY); 
          buttonM = (Button) findViewById(R.id.buttonMED);

// here I do all that button stuff for the layout
}



    public void onClick(View arg0) {
        System.out.println("click");
        if (arg0==buttonE)  {

                 int checkedRadioButton = radioGroup1.getCheckedRadioButtonId();
                                 String radioButtonSelected = "";

                                 switch (checkedRadioButton) {

                                  case R.id.radio0 : radioButtonSelected = "radiobutton1";
                                  Toast.makeText(getApplicationContext(), "Easy, 10 selected", Toast.LENGTH_SHORT).show();
                                  setContentView(R.layout.raten);

// Button stuff, again.


}



public void awe()
{   Intent tutorial = new Intent(MainActivity.this, Awesome.class); 
    if (tutorial != null) { startActivity(tutorial); } 

}

簡単なJava

ここで重要なことは何もありません。私が awe() を参照している場所です。

if (s==max+1){System.out.println("AWESOME!"); MainActivity mA = new MainActivity(); mA.awe();}

素晴らしい.java

public class Awesome extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.awesome);
    }

重要なことをすべて投稿したことを願っています

4

4 に答える 4

3

Android アクティビティに関する考慮事項:

extend Activityで定義されたクラスはありますAndroidManifest.xmlか?

Contextを使用する際の注意点はありますIntentsか?

インテントの呼び出しについては、packagename 経由で呼び出している場合は、常に null を確認してください。

Intent mTutorial = new Intent(MainActivity.this, TutorialActivity.class); 

this.startActivity(mTutorial); 

あなたの問題は、「awe()」メソッドを呼び出そうとしただけで、MainActivity の正しいコンテキストを持たない別のアクティビティにありました: http://developer.android.com/reference/android/content/Intent.html

Android Intent には「コンテキスト」と「クラス」が必要です。

更新:これは役立つ別の投稿です:

Android で別のアプリケーションからアプリケーションを起動する

よろしく、

于 2013-05-25T03:25:01.090 に答える
0

同じエラーが発生したため、理解するのに時間がかかりました。@csgero が述べたように、私の問題は、開始しようとしたアクティビティが初期化されていないことでした。onCreate が呼び出される前にエラーが発生することを意味します。そして、呼び出されるアクティビティで変数を定義したコード部分にエラーがあることが判明しました。幸運を!

于 2014-10-30T14:39:31.117 に答える