2017-06-15 3 views
0

私はMainActivityとAdapterを持っています。アダプターの新しいインスタンスが作成されると、私は新しいレルムを作成します。私はどのようにしてonDestroyのメイドの領域を閉じることができますか? 相続人は私がしようと試みたものを:
MainActivityさんのonCreate:メインアクティビティでmyCustomAdapterのpublic methoodを呼び出す方法は?

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()は、それが公開されても、カントーunaccessableです。なぜ私は知りたいのですか?

+0

、それについて何が動作しませんでしたか? – Rogue

+0

AndroidスタジオはcloseRealm()を赤色にマークします。このメドードは存在しないことを示す。私は他のアダプターmethoodにアクセスできますが、これはできません。 –

+1

'ExpandableListAdapter'の型が' myAdapter'ではありません。 Btwすべてのデータを削除してもよろしいですか? :o – EpicPandaForce

答えて

1

エコー、@ EpicPandaForceの答え、ExpandableListAdapterはインターフェイスタイプです。 closeRealm()メソッドは、そのインタフェースのメソッドの1つではありません。これを修正するためにできることの1つは、ExpandableListAdapterを拡張する新しいインターフェイスを作成し、そこに必要な新しいパブリックメソッドのシグネチャをリストすることです。新しいインターフェイスを実装するクラスは、新しいインターフェイスを実装する他のクラスと入れ替えることができます。誰かが将来的に思っている場合

1

はい、EpicPandaForceの答え@使用して、私はコードの変更を掲載します:

@Override 
protected void onDestroy() { 
    super.onDestroy(); 
    myAdapter adapter = (myAdapter) myELV.getExpandableListAdapter(); 
    adapter.closeRealm(); 
} 
関連する問題