2014-09-28 20 views
1

嗨我想運行一個代碼有一個活動和一個BroadcastReceiver運行時,新消息來了,是的,它運行清晰,但我有一個問題與BroadcastReceiver對象!BroadcastReceiver對象只使用初始值,爲什麼?

這是MainActivity類別的一部分:

public class MainActivity extends FragmentActivity { 


    private IncomingSms checkAndDo; //=> OBJECT 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 

     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 


     checkAndDo= new IncomingSms(); 
     checkAndDo.setProgramState(210); // program state is a variable 
     checkAndDo.getProgramState(this); // Toast output : " >>>210 " 

     .... 

但是,當一個新的消息來了,onReceived(所謂的)的問題開始! IncommingSms類:

公共類IncomingSms擴展廣播接收器{

private int programState=110; // Which state we are ? 110=> white/111=> off/210=>black ...  


public void onReceive(Context context, Intent intent) { 

    final Bundle bundle = intent.getExtras(); 


    this.getProgramState(context); 
    // This method called again but toast output is : ">>>110" 
    // which is initial value !? 

    AND .... 

    } 



public void setProgramState(int status) { 

    this.programState=status; 

} 


public void getProgramState(Context context) { 


    Toast.makeText(context, ">>>"+this.programState , Toast.LENGTH_LONG).show(); 

} 

問題:我不知道爲什麼會發生,但的onReceive()僅使用初始值是如此糟糕。任何想法?

+0

如何註冊您的BroadcastReceiver? – 2014-09-28 08:30:46

+0

@Leog:如果是你問的問題,像這樣: – 2014-09-28 08:32:00

+0

<接收機機器人: 「IncomingSms 」名稱=> \t \t \t <意圖濾波器機器人:優先=「 1000 」> \t \t \t <動機器人:名稱=「 android.provider.Telephony.SMS_RECEIVED」 /> \t \t \t \t \t – 2014-09-28 08:32:39

回答

1
this.getProgramState(context); 
// This method called again but toast output is : ">>>110" 
// which is initial value !? 

因爲您註冊的廣播接收器在清單中你遇到了這個問題。所以Android會創建一個新的BroadcastReceiver並將短消息廣播傳遞給它。

如果您希望獲得您在程序中設置的狀態,則必須在您的活動中註冊您的BroadcastReceiver。

IntentFilter filter = new IntentFilter("android.provider.Telephony.SMS_RECEIVED"); 
registerReceiver(checkAndDo, filter); 
+0

我要測試它,Tanx。請保持在線。 TANX – 2014-09-28 08:38:19

+0

問題已解決! – 2014-09-28 08:54:50

+0

很高興知道這一點。 – 2014-09-28 08:55:38

相關問題