2013-12-12 32 views
8

Tôi cố gắng để gọi getActivity() trong OnItemClickListener:Android: Cách gọi hàm getActivity() trong OnItemClickListener()?

class ViewTest{ //called in a fragment 
setOnItemClickListener(new OnItemClickListener() { 

      @Override 
      public void onItemClick(AdapterView<?> parent, View view, int p, long i) { 
       ((MainActivity) getActivity()).makeResultsbarVisible(); 
... 
      } 

     }); 

}

Trong đoạn, lớp được khởi tạo như:

ViewTest editTest = new ViewTest(this); 

Nhưng tôi nhận được một lỗi mà tôi không thể sửa lỗi:

The method getActivity() is undefined for the type new AdapterView.OnItemClickListener(){} 

Làm cách nào tôi có thể gọi getActivity bên trong onItemClick()? Cảm ơn.

+0

gửi mã lớp đầy đủ của bạn nếu có thể ... bạn đang sử dụng trong Fragment? –

+0

Đây có phải là hoạt động hoặc đoạn không? – rahulritesh

+0

của nó trong một lớp được khởi tạo trong một đoạn – user2212461

Trả lời

25

Bạn chỉ có thể sử dụng getActivity bên trong một lớp học Fragment hoặc mở rộng lớp đó. Nếu onItemClickListener bạn đang ở trong một Activity sử dụng MainActivity.this

+0

Giải pháp tuyệt vời! Chính xác điều gì mang lại cho tôi MainActivity.this khi được gọi từ Listener bên trong lớp MainActivity, thể hiện hiện tại của MainActivity ?? – pepper42

0

Sử dụng Class_name.this hoặc xác định một biến Context. và sau đó gọi của bạn bằng cách sử dụng makeResultsbarVisible()Context biến,

Giống như,

Context c = this; 

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