2013-06-05 2 views
0

Предположим, у меня есть Activity A. Activity A имеет кнопку, которая вызывает метод parse() из класса B. parse() имеет булевский чек. Если это так, то parse() возвращает Object (например, String); если оно ложно parse() вызывает promtError() в классе B.Как вернуться к первоначальной активности до завершения метода?

активность A:

public class A extends Activity { 
// 
// activity body 
// 

public void onClick(View v){ 
String s = B.parse(); 
Intent i = new Intent(getApplicationContext(), 
        AddToCheckActivity.class); 
i.putExtra("tip", s); 
startActivity(i); 
finish(); 
} 
} 

где promtError():

public static void promtError(){ 
     context = MyApplication.getAppContext(); 
     AlertDialog.Builder builder = new AlertDialog.Builder(MyApplication.getAppContext()); 
     builder.setMessage("Потеряна связь с сервером. Попробуйте позже.") 
       .setCancelable(false) 
       .setPositiveButton("закрыть", new DialogInterface.OnClickListener() { 
        public void onClick(DialogInterface dialog, int id) { 
         //do things 
        } 
       }); 
     AlertDialog alert = builder.create(); 
     alert.show(); 
    } 

метод разбора():

public String parse(){ 
    if(a == 1) return generate(); 
    else promtError(); 
    return ""; 
} 

Как я должен изменить promtError() или parse(), чтобы вернуться к Activity A на минуту, прежде чем я нажал кнопку на Activity A? Поэтому мне нужно поведение, подобное GOTO, когда promtError() срабатывает, parse() не возвращает «» и переходит в Activity A, так как public void onClick (View v) никогда не вызывался.

Фактически цель этого кода для защиты приложения от сбоев при сбое интернет-связи. У приложения есть много мест, которые вызывают parse(). parse() отправляет/получает данные на сервер/с сервера. Таким образом, я надеюсь добавить Сафти Chack разобрать(), но не к деятельности, которая будет называть его

+0

Почему promtError статический? – njzk2

+0

Почему вы не можете просто ввести класс B в код ошибки или исключить исключение, а затем позволить 'Activity' A обрабатывать это соответствующим образом, разрешив A показать само сообщение? Только для уточнения, является ли B также «Деятельностью»? Потому что я не понимаю, почему вам нужно сначала вернуться к «Деятельности» A, если вы ее никогда не покидали? – Xilconic

+0

B не является активностью. Причина, почему я не делаю диалог внутри действия A - у меня есть много действий и диалоговое сообщение, и его причина одинакова для всех действий – Yarh

ответ

2

Как я должен modefiy promtError(), чтобы вернуться к активности на мгновение, прежде чем я нажал кнопку?

Вы хотели сказать «Как мне отменить диалог?». Звоните cancel() или dismiss():

public static void promtError() { 
    context = MyApplication.getAppContext(); 
    AlertDialog.Builder builder = new AlertDialog.Builder(MyApplication.getAppContext()); 
    builder.setMessage("Потеряна связь с сервером. Попробуйте позже.") 
      .setCancelable(false) 
      .setPositiveButton("закрыть", new DialogInterface.OnClickListener() { 
     public void onClick(DialogInterface dialog, int id) { 
      dialog.dismiss(); 
     } 
    }); 
    AlertDialog alert = builder.create(); 
    alert.show(); 
} 
+0

, если я просто отменил диалог, не останется ли он делать синтаксический анализ(), возвращающий «» в результате анализа? – Yarh

+0

'parse()' будет уже возвращено "" даже до отклонения диалога. – ozbek

+0

Идея состоит в том, чтобы предотвратить возврат "". Я хочу нечто похожее на goto, но теперь настолько уродливое. – Yarh

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