Tôi có một lớp bên trong mà tôi muốn đưa vào một lớp thư viện tổng quát hơn "Người trợ giúp". Tôi đã có cùng một vấn đề bạn làm. Tôi nhận được xung quanh nó bằng cách làm cho lớp trừu tượng trợ giúp, với một phương thức trừu tượng duy nhất. Sau đó, trong gói dự án của tôi, tôi mở rộng lớp trình trợ giúp với một lời gọi hàm dựng trong lớp cụ thể.
public class MyActivity extends Activity {
onCreate() {
MyHelperClass = new MyHelperClass(this, "foobar");
}
public void myMethod() {
// Code...
}
}
// In a different file
public class MyHelperClass extends HelperClass {
private MyActivity mInstance;
public MyHelperClass(MyActivity act, String data) {
super();
this.mInstance = act;
this.mActivity = act; // Useful for calling generic Activity methods in the HelperClass
this.mData = data;
}
protected void callMyActivityMethod() {
mInstance.myMethod();
}
}
// In a different file
public abstract class HelperClass {
protected Activity mActivity;
protected String mData;
public HelperClass() {
// Subclass will set variables
}
protected abstract void callMyActivityMethod();
// More code for all the other stuff the class does
}
Bằng cách này, tôi có một lớp helper có chứa phần lớn các công việc "", và tất cả những gì phải làm là tạo ra một lớp với các nhà xây dựng và một phương pháp để có được quyền truy cập vào các phương thức quan tâm của hoạt động gọi điện.
bài viết mã mà bạn đã sử dụng để thử gọi myMethod(). Bạn đang instantiating một đối tượng MyActivity? Nếu không, tôi không nghĩ rằng bạn sẽ có thể gọi myMethod() vì nó không phải là tĩnh. Bạn có thể thử làm cho myMethod() tĩnh và sau đó bạn sẽ có thể sử dụng MyActivity.myMethod() từ MyClass của bạn. P.s Tôi thực sự hy vọng bạn đã thay đổi tên của các lớp học của bạn cho mục đích trình diễn ở đây.Nếu đó là những tên mà bạn đang thực sự sử dụng trong dự án của bạn, bạn nên nghiêm túc xem xét việc sử dụng nhiều tên mô tả hơn. Nó sẽ làm cho mã của bạn dễ hiểu hơn. – FoamyGuy
@Tim Tôi đã cố gắng gọi bằng cách sử dụng ngữ cảnh i được truyền cho hàm tạo trong MyClass, như vậy .. – Deepak
Thực tiễn rất xấu là có các phương pháp tĩnh trên Hoạt động, tôi khuyên bạn nên tìm cách để làm những gì bạn cần làm mà không có phương pháp tĩnh trên hoạt động. – SnowyTracks