是否可以从java类调用android类?

时间:2012-01-12 10:26:42

标签: java android nullpointerexception

我有一个扩展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(); 这段代码有什么问题?

1 个答案:

答案 0 :(得分:2)

您将MyClass(这是一个Activity类)视为常规Java类。 MyClass活动既未注册也未加载,因此此处对startActivity的调用毫无意义。为此,您需要通过构造函数将Context的引用传递给SourceClassMyClass