我有MainActivity和Adapter。当创建适配器的新实例时,我创建新领域。我怎样才能在onDestroy方法中关闭这个领域?
继承人我的尝试:
MainActivity的onCreate:
public class MainActivity extends AppCompatActivity {
private ExpandableListView myELV;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
final android.support.v7.app.ActionBar actionBar = this.getSupportActionBar();
myELV = findViewById(R.id.expandable_list_view);
myAdapter adapter = new myAdapter(getApplicationContext());
myELV.setAdapter(adapter);
适配器:
public class myAdapter extends BaseExpandableListAdapter{
private Context context;
private Realm realm;
public myAdapter(Context context){
this.context = context;
}
public void closeRealm(){
realm.deleteAll();
realm.close();
}
MainActivity的onDestroy:
@Override
protected void onDestroy() {
super.onDestroy();
ExpandableListAdapter adapter = myELV.getExpandableListAdapter();
adapter.closeRealm();
}
但即使是公开的,也无法访问closeRealm()。我想知道为什么?
答案 0 :(得分:1)
Echoing,@ EpicPandaForce的回答,ExpandableListAdapter是接口类型。您的closeRealm()方法不是该接口中的方法之一。你可以做的一件事就是创建一个扩展ExpandableListAdapter的新接口,并列出你想要的新公共方法的签名。然后,任何实现新接口的类都可以交换为实现新接口的任何其他类。
答案 1 :(得分:1)
是的,使用@ EpicPandaForce的答案,如果有人在将来想知道,我会在代码中发布更改:
@Override
protected void onDestroy() {
super.onDestroy();
myAdapter adapter = (myAdapter) myELV.getExpandableListAdapter();
adapter.closeRealm();
}