我只想调用包含Intent Method的MyFunction

时间:2016-07-04 00:57:20

标签: android android-intent nullpointerexception switch-statement

我有8个Activity类。我又创建了一个(第9类)来切换这8个类中的任何一个。第9类包含Intent方法。但当ı以任何类(1或2或3或......)(不是9)运行时,应用程序会给出一个空指针异常(不幸的是!app已经停止。)

首先,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);

在其他课程中,当ı点击按钮时,当程序在调用函数的行运行时会发生异常。

和Class2(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;
        }
    });
  }
}

我整天都在处理这个问题。我研究过,但英语不是我的母语。我发现了一些微笑的例子,但这些都不是同一个问题。我只能调用包含Intent Method的MyFunction。感谢。

1 个答案:

答案 0 :(得分:0)

您的Metot类是Context的子类,但它没有附加到应用程序上下文,因为您使用“new”创建它,要执行您想要的操作,您必须创建这样的类:

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