В моем приемнике вещания я обращаюсь к методу, который вызывает другой метод, который находится в моем классе 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");
}
}
}
Нуль в onCreate()? –
Если запущено onCreate, оно не равно нулю. Но когда мой onReceive запускается после закрытия приложения, onCreate не запускается, поэтому он равен нулю. – Oliver84
Я не уверен, чего вы хотите. Очевидно, что если приложение закрыто, эти представления не будут существовать. Вы предполагаете, что приложение запускается самопроизвольно, когда вещательный приемник вызывает statusText()? Я не знаю, возможно ли это из B.R. но вы можете попробовать вызвать startActivity(). –