0

私は8つのアクティビティクラスを持っています。私はもう1つ(9クラス)を作成し、この8クラスのいずれかを切り替える。 9番目のクラスにはインテントメソッドが含まれています。Iインテントメソッドを含むMyFunctionのみを呼び出すようにしたい

:クラス(1または2または3または...)(ない9)のいずれかとして実行をıときには、アプリがnullポインタ例外(!。残念ながらアプリが停止した)

まず、Class1の(Metot)を得ました

public void fonk2(){ 
    Intent i=null; 
    Random r=new Random(); 
    int index=r.nextInt(4); 

    switch(index){ 
     case 0: 
      i=new Intent(Metot.this,Main6Activity.class); 
      break; 

     case 1: 
      i=new Intent(Metot.this,Main7Activity.class); 
      break; 

     case 2: 
      i=new Intent(Metot.this,Main8Activity.class); 
      break; 

     case 3: 
      i=new Intent(Metot.this,Main9Activity.class); 
      break; 

    } 
    startActivity(i); 

ıをクリックすると、関数が呼び出された行でプログラムが実行されている間に例外が発生します。

とクラス2(MainActivity2):この問題はすべての日で

public class MainActivity2 extends AppCompatActivity { 

     Button b5; 

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

    b5=(Button)findViewById(R.id.button5); 

    b5.setOnTouchListener(new View.OnTouchListener() { 
     @Override 
     public boolean onTouch(View v, MotionEvent event) { 
      switch (event.getAction()){ 
       case MotionEvent.ACTION_UP:{ 
        Button view= (Button) v; 

        Metot m=new Metot(); 
        m.fonk2(); 

        view.getBackground().clearColorFilter(); 
        view.invalidate(); 
        break; 
       } 

       case MotionEvent.ACTION_DOWN:{ 
        Button view= (Button) v; 
        view.getBackground().setColorFilter(0x77000000, PorterDuff.Mode.SRC_ATOP); 
        view.invalidate(); 
        break; 
       } 
      } 

      return true; 
     } 
    }); 
    } 
} 

I dealed。私は研究しましたが、英語は母国語ではありません。 ıはいくつかのsmilar例を見つけましたが、これらは同じ問題ではありません。私はIntentメソッドを含むMyFunctionだけを呼び出すことはできません。ありがとう。

+0

使用Logクラスを監視し、あなたのプログラムが停止しています場所を確認します。 –

+0

i =新しいインテント(Metot.this、Main7Activity.class);この行.. –

答えて

0

あなたMetotクラスはあなたがこのようなクラスを作成する必要がやりたいために、コンテキストのサブクラスですが、「新しい」とそれを作成するので、それはアプリケーションコンテキストに添付されていません。

public class Metot { 
    public static void fonk2(Activity activity){ 
     Intent i=null; 
     Random r=new Random(); 
     int index=r.nextInt(4); 

     switch(index){ 
      case 0: 
       i=new Intent(activity, Main6Activity.class); 
      break; 

      case 1: 
       i=new Intent(activity, Main7Activity.class); 
      break; 

      ... 
     } 
     activity.startActivity(i); 
    } 
} 

、その後はこのようにそれを呼び出す:

Metot.fonk2(this); 
+0

ありがとう。この問題は解決されました。私はパラメータを使ってアクティビティクラスを送る必要がありました。私は、オブジェクト指向のロジックについてもう少し作業する必要があると思います。 –

関連する問題