2017-05-27 54 views
0

所以我的接收器工作正常......等待的意圖正在發送和接收,並一直工作正常,直到這...我有一個微調包含報警聲音,當用戶點擊其中的項目,我想要得到的位置,並將其發送到receiver..problem在接收器總是得到的值作爲0..can有人幫接收器沒有獲取數據

這是我在我的鬧鐘活性微調

int choose_alarm_sound; 

spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 
     @Override 
     public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { 



       String selected = parent.getItemAtPosition(position).toString(); 
       choose_alarm_sound = position; 
       Intent broad_Intent = new Intent(); 
       Log.e("TEST 1", choose_alarm_sound + ""); 



       switch (selected) { 
        case "Buzzer": { 
         mp = MediaPlayer.create(alarmClockActivity.this, R.raw.buzzer); 
         mp.start(); 

         break; 
        } 
        case "Doorbell": { 
         mp = MediaPlayer.create(alarmClockActivity.this, R.raw.doorbell); 
         mp.start(); 

         break; 
        } 
        case "FirePager": { 
         mp = MediaPlayer.create(alarmClockActivity.this, R.raw.firepager); 
         mp.start(); 

         break; 
        } 
        case "Ring": { 
         mp = MediaPlayer.create(alarmClockActivity.this, R.raw.ring); 
         mp.start(); 

         break; 
        } 
        case "SchoolBell": { 
         mp = MediaPlayer.create(alarmClockActivity.this, R.raw.schoolbell); 
         mp.start(); 

         break; 
        } 
        case "Siren": { 
         mp = MediaPlayer.create(alarmClockActivity.this, R.raw.siren); 
         mp.start(); 

         break; 
        } 
        case "Siren2": { 
         mp = MediaPlayer.create(alarmClockActivity.this, R.raw.siren2); 
         mp.start(); 

         break; 
        } 
        case "SmokeAlarm": { 
         mp = MediaPlayer.create(alarmClockActivity.this, R.raw.smokealarm); 
         mp.start(); 

         break; 
        } 
        case "Warning": { 
         mp = MediaPlayer.create(alarmClockActivity.this, R.raw.warning); 
         mp.start(); 

         break; 
        } 

       } 
       broad_Intent.putExtra("alarm_choice", choose_alarm_sound); 
       Log.e("TEST 2", choose_alarm_sound + ""); 
       sendBroadcast(broad_Intent); 

這是我的接收器

public class AlarmReceiver extends BroadcastReceiver { 

@Override 
public void onReceive(Context context, Intent arg1) { 

    Integer getAlarm=arg1.getExtras().getInt("alarm_choice"); 

    Log.e("TEST 3", String.valueOf(getAlarm)); 

}

所以我的日誌測試1和測試2總是有相同的值,這是正確的值,但測試3在接收器中是每一次0 ..所以我的接收器沒有收到這個意圖..爲什麼.. .ANY幫助將不勝感激

清單:

<?xml version="1.0" encoding="utf-8"?> 

<application 
    android:allowBackup="true" 
    android:icon="@drawable/mini" 
    android:label="@string/app_name" 
    android:supportsRtl="true" 
    android:theme="@style/AppTheme"> 
    <activity android:name=".MainActivity"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 

    </activity> 
    <activity android:name=".TimeDateRem"/> 
    <activity android:name=".BirthdayRem"/> 
    <activity android:name=".Details"/> 
    <activity android:name=".DailyReminder"/> 
    <activity android:name=".HolidayReminderLebanon"/> 
    <activity android:name=".HolidayReminderSaudiArabia"/> 
    <activity android:name=".HolidayReminderKuwait"/> 
    <activity android:name=".HolidayReminderUAE"/> 
    <activity android:name=".AlarmChooser"/> 
    <activity android:name=".Timer"/> 
    <receiver android:name=".AlarmReceiver"> 
</receiver> 
    <service android:name=".MediaPlayingService"/> 
</application> 

+0

在你發佈的代碼中,除了額外的內容之外,你絕不會在'broad-intent'中放置任何**。當你調用sendBroadcast()時,不會發生任何事情,因爲在廣播「Intent」中沒有設置ACTION或組件。你的'AlarmReceiver.onReceive()'不應該被調用。請修改您的帖子以反映您使用的實際代碼! –

+0

那麼如果我不......它應該發送任何方式不應該呢?我的代碼的其餘部分與這部分無關......這個具體的意圖應該讓我把這個物品在微調器中的位置給接收器......所以如果sendbroadcast不會在意圖中額外添加一個...我應該如何將這個意圖發送給接收者?並且正在調用接收器...我的接收器中的日誌(測試3)正在調用,但正在返回0,這不是正確的值@DavidWasser – spyder3anz

+0

對不起,這根本沒有意義。如果您發送廣播「意圖」只是一個「額外」,Android不知道該交付「意圖」。廣播「意圖」是系統範圍的,Android將向所有註冊接收它的聽衆發送「意圖」。在我看來,其他的東西導致你的'AlarmReceiver.onReceive()'被調用,這將解釋爲什麼「extra」不在你期望的「Intent」中。請張貼您的清單,也許這將有助於解決這個謎團! –

回答

0

因爲您將choose_alarm_sound設置爲id而不是position

+0

不是真的..我只是設置它的位置和接收器仍然獲得值爲0 @Marc – spyder3anz

+0

由於你的代碼現在在你的文章,是的,你真的將choose_alarm_sound設置爲id,你從long轉換爲int,而不是使用實際的旋轉器位置。將choose_alarm_sound更改爲一個整數(它在您的代碼中寫成long),更改choose_alarm_sound =(int)id; choose_alarm_sound = position;它會工作 – Marc

+0

我只是這樣做...測試3仍然是0這意味着接收器仍然沒有收到正確的值.. @Marc – spyder3anz

0

您需要發送帶有ACTION的廣播Intent,並且您需要告訴Android在看到該操作時調用您的BroadcastReceiver。嘗試是這樣的:

在清單:

<receiver android:name=".AlarmReceiver"> 
    <intent-filter> 
     <action android:name="MyAlarmReceiver"/> 
    </intent-filter> 
</receiver> 

這告訴Android的調用AlarmReceiver.onReceive()如果有人發送一個廣播Intent行動的地方「MyAlarmReceiver」。

現在,當您創建onItemSelected()廣播Intent,這樣做:

Intent broad_Intent = new Intent("MyAlarmReceiver"); 

這臺ACTION在廣播Intent爲 「MyAlarmReceiver」。

+0

我很確定這會工作..他沒有...相同的輸出...測試3仍然是0 ...無論如何感謝你 – spyder3anz

+0

我意識到,添加此代碼後,接收器被稱爲兩次...所以它已經被稱爲 – spyder3anz

+0

如果AlarmReceiver已經被調用,那麼你必須註冊它的地方!請掃描您的代碼以參考AlarmReceiver。否則這根本就沒有意義! –