Создание AlertDialog со статическими методами? - PullRequest
5 голосов
/ 13 августа 2010

Я завершил большую часть игры, которую пытаюсь создать, и на протяжении всего проекта я создал одно конкретное действие, которое также вызывает SurfaceView и Thread. Я поместил метод update () в каждый из 3 классов, чтобы каждый из них знал, где находятся другие, каждый раз, когда что-то меняется. По-видимому, единственный способ сделать что-то подобное - использовать статические методы ... Это нормально, пока в моем SurfaceView не возникнет коллизия, и я не хочу сказать Activity, что делать. Я могу передать информацию, но потом не могу найти способ сделать AlertDialog.

Я понимаю, что не могу вызвать showDialog () из статического метода, но я не могу найти способ сделать нестатический метод для его вызова, а затем вызвать этот метод из статического. Я искал ответ и что-то слышал о создании объекта, но не могу понять, что это значит ...

Если у кого-то есть хорошая идея, чтобы обойти меня, пожалуйста, дайте мне знать:)

Ответы [ 2 ]

8 голосов
/ 01 мая 2012

Вот что я использовал:

public static void messageDialog(Activity a, String title, String message){
    AlertDialog.Builder dialog = new AlertDialog.Builder(a);
    dialog.setTitle(title);
    dialog.setMessage(message);
    dialog.setNeutralButton("OK", null);
    dialog.create().show();     

}
0 голосов
/ 12 мая 2011

SurfaceView расширяет View и, таким образом, имеет метод getContext ()

Чтобы создать и показать свой AlertDialog, вы можете сделать следующий код внутри SurfaceView

AlertDialog.Builder builder = new AlertDialog.Builder(getContext());
builder.setTitle("title");
builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
    public void onClick(DialogInterface dialog, int which) {
    dialog.dismiss();
    }
});
Dialog d = builder.create();
d.show();

Это может не работать как Activity.showDialog (int), если ваша деятельность перезапускается (диалог может просто исчезнуть, и вам придется самостоятельно обрабатывать состояние).

Надеюсь, это поможет

...