2015-10-12 3 views
0

У меня есть предупреждение, которое я использую для отображения ошибок. В общем классе утилиты я могу вызвать из любой активности. Когда я вызываю окно ошибки, я передаю текущую активность вместе с сообщением об ошибке.Лучший способ показать оповещение перед началом деятельности?

Util.showAlert(this,"error message goes here"); 

Мой showAlert выглядит следующим образом

AlertDialog alertDialog = new AlertDialog.Builder(act).create(); 

    // Setting Dialog Title 
    alertDialog.setTitle("ERROR"); 

    // Setting Dialog Message 
    alertDialog.setMessage(msg); 

    // Setting OK Button 
    alertDialog.setButton("OK", new DialogInterface.OnClickListener() { 
     public void onClick(DialogInterface dialog, int which) { 

     } 
    }); 

    // Showing Alert Message 
    alertDialog.show(); 
} 

Я столкнулся с недавней проблемой и не уверен, что лучший способ это исправить эту проблему, и любые будущие те, призывающих тот же общий alertbox. Моя MainActivity вызывает SecondActivity. В onCreate для этого действия я делаю некоторую обработку, а затем вам нужно открыть базу данных и получить некоторую информацию. Если информация недоступна, я не могу запустить SecondActivity и поэтому должен выйти и вернуться в MainActivity.

В моей процедуре проверки ошибок в SecondActivity я проверяю, есть ли у меня данные ... если я это сделаю, я продолжу. Если нет, то я называю:

Util.showAlert(this,"Whoops, we have a problem"); 
finish(); 

Проблема заключается в том, отделка() пожары и SecondActivity закрывается перед открытием showAlert.

При нормальных обстоятельствах с ошибкой я все еще в этом деле. В этом случае я не являюсь.

Каков наилучший способ справиться с этим?

+0

вы должны сделать проверки в основном действии и избавиться от (finish();). его бессмысленно переходить ко второму действию, а затем проверить – Tasos

+0

К сожалению, это невозможно сделать в основном действии. Во второй операции есть некоторая обработка, которая определяет успех/сбой при запуске поиска в базе данных. – Peter

ответ

0

Вам нужно изменить свою логику в диалоговом окне show show, flow me AlertDialog alertDialog = new AlertDialog.Builder (act) .create();

// Setting Dialog Title 
    alertDialog.setTitle("ERROR"); 

    // Setting Dialog Message 
    alertDialog.setMessage(msg); 

    // Setting OK Button 
    alertDialog.setButton("OK", new DialogInterface.OnClickListener() { 
     public void onClick(DialogInterface dialog, int which) { 
      act.finish(); // act is Activity(context) showing Alert 
     } 
    }); 

    // Showing Alert Message 
    alertDialog.setCancelable(false) // cannot dismiss without Ok button 
    alertDialog.show(); 
} 

и в случае ошибки вы только звоните

Util.showAlert(this,"Whoops, we have a problem"); 
+0

Проблема в том, что это повторно используемое предупреждение об ошибке. В большинстве случаев я не хочу ЗАВЕРШИТЬ деятельность ... но в некоторых случаях я это сделаю. Вот почему я не поместил FINISH в onClick. – Peter

0

Проблема заключается в том, отделка() пожаров и SecondActivity закрывает до открытия showAlert.

Финиш активность после показа оповещения или когда пользователь нажимает кнопку на OK AlertDialog по телефону:

act.finish(); 

в onClick метод AlertDialog.

+0

Если я поместил act.finish в AlertDialog, он больше не является универсальной частью кода, которую я могу использовать в различных местах, действиях и событиях, когда необходимо показать ошибку. Большинство из них, onClick, не будут связаны с «финишем» в активности. – Peter

+0

@Peter: затем используйте 'instanceof' для проверки, является ли действие объектом Activity, а затем завершите финиш, иначе сделайте то, что хотите –

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