我有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。感谢。
答案 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);