2014-10-29 4 views
0

У меня есть следующий код, где я не могу поставить finish();, когда я нажимаю «OK» ButtonDialog).Не удается закрыть приложение из диалогового окна?

public void showAlertDialog(Context context, String title, String message, 
    Boolean status) { 
    AlertDialog alertDialog = new AlertDialog.Builder(context).create(); 

    // Setting Dialog Title 
    alertDialog.setTitle(title); 

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

    if(status != null) 
     // Setting alert dialog icon 
     alertDialog.setIcon((status) ? R.drawable.success : R.drawable.fail); 

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

    }); 

    // Showing Alert Message 
    alertDialog.show(); 

} 
} 

Что это такое? Я имею в виду, я не так много понимаю, я новичок, но я просто не хочу решения, я тоже хочу объяснить, если это возможно, пожалуйста.

+1

Объясните * почему * вы «не можете» поставить 'finish()' там. Что происходит/не происходит? Ошибки? – codeMagic

+0

@codeMagic Да, я получаю ошибки:/ «Метод отделки() не определено для типа нового DialogInterface.OnClickListener() {}» PS: Я не в моей «основной» деятельности. –

+0

Да, тогда это твоя проблема. Вам нужно либо передать ссылку на вашу деятельность, либо создать обратный вызов actiivty – codeMagic

ответ

3

finish() только может завершить Activity.But вы хотите закрыть свое приложение, тогда finsih() не будет работать. для этого вы должны вызвать этот метод.

alertDialog.dismiss();  
System.exit(0); 
+0

Большое спасибо. –

1

Возможное объяснение состоит в том, что эта функция не входит в ваш класс активности. Если это так, вам придется приобрести экземпляр вашей деятельности в этом классе. Например, если это mActivity Затем используйте mActivity.finish() в вашей функции show.

+0

lol, хотя это было по этой причине, но отрицательно. Положите это: «AlertDialogManager.finish();» AlertDialogManager.java - это класс. И я получаю эту ошибку: «Метод finish() не определен для типа AlertDialogManager». Пробовал закончить метод, но я не понимаю, что это такое. (и не работает) –

+0

Затем, пожалуйста, разместите весь свой класс. – AnswerBot

1

Если вы хотите закрыть приложение из диалога, вы можете, но finish() завершит() текущую активность? Попробуйте System.exit (0); с вызовом слушателя для Activity.

interface Listener{ 
    onOK(); 
} 
Dialog{ 
    onClick(){ 
     Listener.onOK(); 
    } 
} 
Activity implements Listener{ 
    onOK(){ 
     this.finish(); 
     System.exit(0); 
    } 
} 
1

Поскольку у вас есть Context от вашего Activity, литой, что Activity и вызвать finish() на нем

alertDialog.setButton("OK", new DialogInterface.OnClickListener() { 
    public void onClick(DialogInterface dialog, int which) { 
     ((Activity)context).finish(); 
    } 

Делая это, вы должны были бы сделать context окончательным или сделать его переменным членом какой бы ни класс это находится в.

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