2010-08-13 39 views
5

Tôi đã hoàn thành hầu hết trò chơi mà tôi đang cố gắng thực hiện và trong suốt dự án tôi đã tạo một Hoạt động cụ thể cũng gọi là SurfaceView và một Chủ đề. Tôi đặt một phương thức update() trong mỗi lớp trong số 3 lớp để mỗi chúng biết vị trí của những thứ khác là mọi thứ thay đổi. Rõ ràng, cách duy nhất để làm một cái gì đó như thế này là sử dụng các phương pháp tĩnh ... Điều này là tốt cho đến khi một va chạm xảy ra trong SurfaceView của tôi và tôi muốn nói cho Activity biết phải làm gì. Tôi có thể chuyển tiếp thông tin, nhưng sau đó tôi không thể tìm thấy một cách để tạo ra một AlertDialog.Tạo AlertDialog với phương pháp tĩnh?

Tôi hiểu rằng tôi không thể gọi showDialog() từ phương thức tĩnh, nhưng tôi không thể tìm cách tạo phương thức không tĩnh để gọi và sau đó gọi phương thức đó từ phương thức tĩnh. Tôi đã tìm kiếm câu trả lời và tôi đã nghe điều gì đó về việc tạo đối tượng nhưng tôi không thể hiểu được điều đó có nghĩa là gì ...

Nếu ai đó có ý tưởng tốt để giải quyết vấn đề này, vui lòng cho tôi biết:)

+1

Tôi nghĩ rằng phải nhớ rằng thoại tĩnh không được khuyến khích vì chúng được liên kết với một bối cảnh, có thể trở nên khá là một vấn đề khi hoạt động là phá hủy (xoay màn hình chẳng hạn.) – Sephy

+0

Tại sao bạn không chuyển ngữ cảnh sang phương thức tĩnh của mình? – Pentium10

+0

Cảm ơn cả hai về câu trả lời của bạn. Sephy, tôi đã đọc rất nhiều rằng các phương pháp tĩnh là một ý tưởng tồi trong thời gian dài, và tôi đã tránh được vấn đề nhiều nhất có thể, nhưng có vẻ như tôi không thể tìm ra cách nào xung quanh vấn đề này. Tôi biết tôi phải gọi một phương thức trong Activity từ SurfaceView, điều này buộc tôi phải sử dụng một phương pháp tĩnh ... Đúng không? Pentium10, tôi xin lỗi nhưng đây là trò chơi đầu tiên của tôi, tôi hiểu ngữ cảnh là gì nhưng tôi không chắc chắn ý bạn là gì, bạn có thể chỉ cho tôi một ví dụ hay gì đó không? Tôi không quan tâm đến việc sửa chữa vấn đề khi tôi hiểu điều gì sai ... Cảm ơn rất nhiều! – Aaron

Trả lời

0

SurfaceView kéo dài Xem và do đó có một phương pháp getContext()

Để tạo và hiển thị AlertDialog của bạn, bạn có thể làm đoạn mã sau bên SurfaceView bạn

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(); 

Điều này có thể không hoạt động như hoạt động. showDialog (int) nếu ac của bạn tivity được khởi động lại (hộp thoại có thể biến mất và bạn sẽ phải tự xử lý trạng thái).

Hope this helps

9

Dưới đây là những gì tôi đã sử dụng:

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();  

} 
Các vấn đề liên quan