2012-02-14 30 views
0

我想從子類調用主要活動類的功能。 這裏是我的源代碼: SMS.javaJava Android:子類,從主要活動類引發的調用方法NullPointerException

public class SMS extends ListActivity { 
    public void testerr(String kata) { 
     Toast.makeText(getBaseContext(), "test coyyyy="+kata, Toast.LENGTH_LONG).show(); 
    } 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     } 
} 

SMSReceiver.java

public class SmsReceiver extends BroadcastReceiver { 
    @Override 
    public void onReceive(Context context, Intent intent) { 
     Bundle bundle = intent.getExtras(); 
     SmsMessage[] msgs = null; 
     String str = ""; 
     try { 
      if (bundle != null) { 
       Object[] pdus = (Object[]) bundle.get("pdus"); 
       msgs = new SmsMessage[pdus.length]; 
       for (int i = 0; i < msgs.length; i++) { 
        msgs[i] = SmsMessage.createFromPdu((byte[]) pdus[i]); 
        str += "SMS from " + msgs[i].getOriginatingAddress(); 
        str += " :"; 
        str += msgs[i].getMessageBody().toString(); 
        str += "\n"; 
       } 
       Toast.makeText(context, str, Toast.LENGTH_LONG).show(); 
       SMS sss = new SMS(); ---> call the main class 
       sss.testerr("try the words"); ---> call method from main class 
       Toast.makeText(context, str, Toast.LENGTH_LONG).show(); 
      } 
     } 
     catch(NullPointerException ex){ 
      Toast.makeText(context, "penyakite neng kene:"+ex.getMessage(), Toast.LENGTH_LONG).show(); 
     } 
    } 
} 

我的程序運行它後收到新的短信,我總是得到NullPointerException異常時sss.testerr調用( 「我的例子」); 任何線索傢伙? 謝謝你的幫助

+0

你應該張貼的logcat的錯誤。 – 2012-02-14 04:44:00

回答

1

你不應該用它的構造函數實例化Activity,或者以一個intent來啓動它,或者如果Activity已經啓動了,它將實現廣播接收器。

如果你只想從你的接收機顯示敬酒,你可以使用答案this question

+0

親愛的binyamin,你有任何創建這個Activity的意圖的例子嗎?其實不是我要展示的祝酒,而是另一個類似它的類。非常感謝您的快速回復。 – 2012-02-14 04:57:34

+0

當然。請參閱此處的示例 - > http://groups.google.com/group/android-developers/browse_thread/thread/5f5808df6c256da7 – MByD 2012-02-14 04:59:56