我有一个扩展Activity的android类。
public class MainAct extends Activity{
Context context;
SourceJava srcClass;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
context = this;
System.out.println("inside oncreate");
setContentView(R.layout.main);
srcClass = new SourceJava();
}
}
我有另一个Java类,如下所示,这是从MainAct类调用的。
public class SourceJava {
public SourceJava(){
System.out.println("inside constructor***");
MyClass myClass = new MyClass();
if(myClass != null){
System.out.println("**not null");
myClass.powerOff();
}
}
}
在SourceJava中,我正在调用另一个类。即
public class MyClass extends Activity{
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
System.out.println("**inside myclass");
powerOff();
}
public void powerOff(){
System.out.println("**inside powerOff");
Intent call = new Intent(Intent.ACTION_DIAL,Uri.parse("tel:5555"));
startActivity(call);
}
}
}
我在第startActivity(call)
行收到NullPointerException,
myClass.powerOff();
和
srcClass = new SourceJava();
这段代码有什么问题?
答案 0 :(得分:2)
您将MyClass
(这是一个Activity类)视为常规Java类。 MyClass
活动既未注册也未加载,因此此处对startActivity
的调用毫无意义。为此,您需要通过构造函数将Context
的引用传递给SourceClass
和MyClass
。