2017-01-03 2 views
1

В моем приемнике вещания я обращаюсь к методу, который вызывает другой метод, который находится в моем классе MainActivity. Метод из моего класса MainActivity использует переменные, установленные в методе onCreate.Доступ к текстовым представлениям от широковещательного приемника

Проблема, с которой я столкнулась, заключается в том, что, когда широковещательный приемник пытается получить доступ к этому методу при закрытии приложения, он находит переменные равными нулю, поскольку метод onCreate не работал, чтобы установить переменные.

Должен ли я попытаться вызвать метод onCreate из моего широковещательного приемника, или у меня есть эта настройка неправильно? Я попытался сконденсировать код немного, поэтому он не слишком длинный, но ниже вы можете увидеть суть того, что я пытаюсь сделать.

Ошибка, которую я получаю, заключается в том, что при попытке setText «текст» и «звонок» являются нулевыми. Это происходит только тогда, когда широковещательный приемник работает, пока приложение закрыто и не работает.

public class WifiScanCompleteReceiver extends BroadcastReceiver { 
     public void onReceive(Context context, Intent intent) { 
     ... 
     }  
     public static void activate() { 
      ... 
      MainActivity.statusText(); 
     } 
} 

public class MainActivity extends Activity { 
    protected void onCreate(Bundle savedInstanceState) { 
      ... 

      setContentView(R.layout.activity_main); 

      text = (TextView)findViewById(R.id.state); 
      ringer = (TextView)findViewById(R.id.mode); 
      state = mSettings.getString("state", "init"); 
      mode = mSettings.getInt("ringer", 0); 
      statusText(); 
    } 
    public static void statusText() { 
      text.setText(state); 
      if (mode == 1) { 
       ringer.setText("Vibrate"); 
      } else if (mode == 2) { 
       ringer.setText("Normal"); 
      } else { 
       ringer.setText("Unkown"); 
      } 
     } 
} 
+0

Нуль в onCreate()? –

+0

Если запущено onCreate, оно не равно нулю. Но когда мой onReceive запускается после закрытия приложения, onCreate не запускается, поэтому он равен нулю. – Oliver84

+0

Я не уверен, чего вы хотите. Очевидно, что если приложение закрыто, эти представления не будут существовать. Вы предполагаете, что приложение запускается самопроизвольно, когда вещательный приемник вызывает statusText()? Я не знаю, возможно ли это из B.R. но вы можете попробовать вызвать startActivity(). –

ответ

0

Вместо того, чтобы получить доступ к TextView от приемника, я вызвал основную деятельность в качестве службы с context.startService(Intent); и что, казалось, чтобы получить меня, что я хотел.

Мне нужно было запустить код в моей основной деятельности, чтобы запустить, даже если основное действие было остановлено. Поэтому это решило это для меня.

Смежные вопросы