java - 如何在主 Activity 中调用myCustomAdapter的公共(public)方法?

标签 java android android-studio realm

我有 MainActivity 和适配器。创建适配器的新实例时,我创建新 Realm 。如何在 onDestroy 方法中关闭 Realm ? 这是我尝试过的:
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() 是公开的,也是无法访问的。我想知道为什么?

最佳答案

呼应,@EpicPandaForce 的回答,ExpandableListAdapter是接口(interface)类型。您的 closeRealm() 方法不是该接口(interface)中的方法之一。要解决此问题,您可以做的一件事是创建一个扩展 ExpandableListAdapter 的新接口(interface),并列出您想要的新公共(public)方法的签名。然后,任何实现新接口(interface)的类都可以替换为实现新接口(interface)的任何其他类。

关于java - 如何在主 Activity 中调用myCustomAdapter的公共(public)方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44574148/

相关文章:

java - 更改 Java 中传递的参数(通过 ref、value 调用)

方法存在时的Java NoSuchMethodError

android - android中的动画?

android - ADB 无法在 Ubuntu 18.04 上检测到 Android 设备

android - 如何在另一个应用程序中提示自动填充?

java - 如何针对非法反射访问警告抛出异常?

android - onTaskRemoved() 在主页按下并终止应用程序时未被调用

java - 如何合并两个android studio项目并使用它?

声明多个域时的 Android applink 消歧对话框

java - Java Servlet(JSP),内部服务器错误