2012-01-12 21 views
0

我有一個擴展活動的android類。是否有可能從java類調用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

問題可能與意圖謊言...意圖可能無法正確創建。請嘗試調試並顯示日誌請詳細信息。 – 2012-01-12 10:36:46

回答

2

您正在將MyClass(這是一個Activity類)當作普通的Java類。 MyClass活動既沒有註冊也沒有加載,所以在這裏致電startActivity毫無意義。爲此,您需要通過構造函數將Context的引用傳遞給SourceClassMyClass

+0

非常感謝我得到它。 – shiv1229 2012-01-12 11:03:27

+0

我在問你一個問題。有沒有可能訪問android內部API的。即com.android.internal.telephony。 – shiv1229 2012-01-12 13:23:31

+0

@ shiv1229 - 我會說沒有com.android.internal是第三方API。看看SO線程 - http://stackoverflow.com/questions/2001146/reflection-to-access-advanced-telephony-features和在谷歌討論 - http://groups.google.com/group/android-developers/browse_thread /線程/ b0b8b223a565319f?pli = 1 – adatapost 2012-01-12 13:30:44

相關問題