2013-01-23 43 views
14

Tôi rất mới sử dụng Android và đang theo dõi example này.getActivity() nơi nó được xác định?

Mã nói rằng chúng ta cần phải làm các bước sau để nhận được một hộp thoại:

AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); 

// 2. Chain together various setter methods to set the dialog characteristics 
builder.setMessage(R.string.dialog_message) 
     .setTitle(R.string.dialog_title); 

// 3. Get the AlertDialog from create() 
AlertDialog dialog = builder.create(); 

Nhưng nơi nào phương pháp getActivity() được xác định?

Tôi không thể tìm thấy phương pháp đó.

+0

gọi một phương thức như vậy cũng giống như gọi 'this.getActivity()' để các đối tượng 'này' cần phải có mà phương pháp có sẵn. – JDx

+0

trong trường hợp này, nó nằm trong một đoạn – njzk2

Trả lời

38

Phương thức getActivity() cung cấp ngữ cảnh của Hoạt động. Bạn có thể sử dụng YourActivityName.this thay vì nó.

Phương pháp getActivity() thường được sử dụng trong các đoạn để lấy bối cảnh hoạt động mà chúng được chèn vào hoặc tăng cao.

ví dụ

AlertDialog.Builder builder = new AlertDialog.Builder(YourActivityName.this); 

hoặc nếu bạn đang viết mã trong hoạt động của bạn bản thân thậm chí

AlertDialog.Builder builder = new AlertDialog.Builder(this); 

ý chí tập luyện. Vui lòng hỏi bất kỳ nghi ngờ nào

+6

'YourActivityName.this' –

+0

Tôi không nhận được bất kỳ ngoại lệ nào. Có bất kỳ phương pháp nào cần được gọi để làm cho hộp cảnh báo được hiển thị không? – sriram

+1

bạn nên gọi dialog.show() – Aram

0

Bài viết này mô tả làm thế nào để tạo ra một AlertDialog trong một Fragment. trong Fragments, bạn có thể nhận được Activity tương ứng bằng cách gọi phương thức getActivity(). nhưng trong trường hợp của bạn tôi giả sử bạn đang làm điều này trong một Activity. vì vậy bạn không cần phải gọi getActivity(). chỉ cần sử dụng this

AlertDialog.Builder builder = new AlertDialog.Builder(this); 
0

getActivity(); là một phương pháp phân mảnh android, nếu bạn muốn hiển thị hộp thoại trong hoạt động của mình, chỉ cần vượt qua this hoạt động của bạn thay vì getActivity().

0

getActivity() là phương thức thành viên của hoạt động cấp siêu mà bạn mở rộng. Nó được định nghĩa trong chính lớp học Hoạt động. Infact onCreate(), onPause() và tất cả các chức năng khác cũng được xác định trong lớp cha Hoạt động.

1

Hàm tạo AlertDialog.Builder mong đợi thông số Context. Context có thể truy cập từ Activity, Service vv, vì tất cả đều là extendContext và có thể được chuyển thành this.

Phương thức getActivity() được khai báo khi những người khác đã quan tâm đến lớp học Fragment.

+0

hmmm Tôi đã thử 'MyActivity.this' nhưng nó không hoạt động. Lưu ý rằng tôi đang ở trong một 'setOnClickListener' trên một nút'. – sriram

2

AlertDialog.Builder() mới cần bối cảnh làm thông số đầu vào. Vì vậy, hãy thử như

AlertDialog.Builder builder = new AlertDialog.Builder(yourActivityName.this); 
0

Tôi đã có chính xác cùng một vấn đề và cuối cùng tôi đã tìm thấy những gì tôi thực sự nghi ngờ ... Chỉ cần thêm:

dialog.show(); 

... và thì đấy. Nó đây rồi. Tự hỏi tại sao điều này không được nêu trong ví dụ ban đầu !?

0

Cập nhật mức API android 23.

Sử dụng getContext() thay vì getActivity().

0

// 1. nhanh chóng một AlertDialog.Builder với constructor của nó

AlertDialog.Builder builder = new AlertDialog.Builder(yourActivityName.this); 

// 2. Chuỗi phương pháp setter cùng khác nhau để thiết lập các đặc thoại

builder.setMessage(R.string.dialog_message).setTitle(R.string.dialog_title); 

// 3. Lấy AlertDialog từ tạo()

AlertDialog dialog = builder.create(); 

// 4. Hiển thị AlertDi alog

dialog.show(); 
Các vấn đề liên quan