从它创建的对象中访问调用活动的方法

use*_*184 1 methods android

我不明白为什么我得到一个编译错误:

   public class Main_screen extends ListActivity {

       List<Object> completeList;
       private My_ArrayAdapter adapter;


    public void onCreate(Bundle icicle) {
       super.onCreate(icicle);
       completeList = getCompleteList();
       adapter = new My_ArrayAdapter(this, completeList);
       setListAdapter(adapter);
       }

    public void doSth() {
                ...
        }
    }
Run Code Online (Sandbox Code Playgroud)

在My_ArryAdapter中:

 public class My_ArrayAdapter extends ArrayAdapter<Object> {

        private final List<Object> list;
        private final Activity context;


        public My_ArrayAdapter(Activity context, List<Object> list) {
           this.context = context;
           this.list = list;

        }

        public void tryIt() {
           context.doSth();   // <-------- THIS DOES NOT WORK, this method can not be called
        }
    }
Run Code Online (Sandbox Code Playgroud)

请解释一下,有什么基础我还没有理解.我只是将上下文传递给我创建的ArrayAdapter实例.从这个实例中我想要调用调用者的方法.

为什么不能这样做?

非常感谢!

Vla*_*mir 6

试试这个:

public void tryIt() {
           ((Main_screen)context).doSth();  
        }
Run Code Online (Sandbox Code Playgroud)

上下文是Activity,它没有doSth(),但是Main_screen有,所以你应该转换为这个类