У меня есть этот код:Использование темы в Android для отправки сообщения
if (value) {
thread = new Thread() {
@Override
public void run() {
try {
while (!isConnected()) {
synchronized (this) {
wait(3000);
}
}
} catch (InterruptedException ex) {
}
if(wifiManager.isWifiEnabled()){
sendMessageWidget();
} else {
showWifiSettingsAlert();
}
}
};
thread.start();
}
Я хочу, чтобы мое приложение, чтобы ждать, пока клиент API Google не подключен, и чем отправить сообщение.
Код для метода IsConnected является:
Но я получаю сообщение об ошибке: NullPointerException: Невозможно создать обработчик внутри потока, который не называется Looper.prepare(), и он говорит, что ошибка где-то идентификатор showWifiSettingsAlert()
вот код:
public void showWifiSettingsAlert() {
AlertDialog.Builder alertDialog = new AlertDialog.Builder(getActivity());
// Setting Dialog Title
alertDialog.setTitle("Location accuracy tips");
// Setting Dialog Message
alertDialog
.setMessage("You can improve the accuracy of your location by turning on\n- Wi-Fi");
// On pressing Settings button
alertDialog.setPositiveButton("Turn on",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
wifiManager.setWifiEnabled(true);
// Posalji poruke al pre toga jos jednom azuriraj
// lokaciju al ako je pozvana aplikacija iz widgeta
if (value) {
sendMessageWidget();
}
}
});
// on pressing cancel button
alertDialog.setNegativeButton("Cancel",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
wifiManager.setWifiEnabled(false);
// Posalji poruke al pre toga jos jednom azuriraj
// lokaciju al ako je pozvana aplikacija iz widgeta
if (value) {
sendMessageWidget();
}
}
});
// Showing Alert Message
alertDialog.show();
}
Я хочу, если Wi-Fi не включен, пользователь т o выбрать включить это или нет, но в любом случае сообщение должно быть отправлено ... можете ли вы помочь?
Потому что вы пытаетесь создать или обновить приложения Вид из рабочего потока и андроид не допускал, что, потому что вы должны вызвать вид кода, связанного в главном Application UI Thread only, так как я не знаю, какие коды в 'sendMessageWidget();' поэтому просто поместите 'showWifiSettingsAlert();' в 'runOnUiThread()'. – user370305
Сделайте это с помощью Handler или используйте runOnUiThread, Проверить http://stackoverflow.com/a/9110251/3530653 –
sendMessageWidget просто отправляет сообщение от виджета, ничего особенного – P3P5