Access Database class through a fragment in android -
i'm trying access sqlite database fragment in "mainactivity.java" database function in file "database.java" database_fragment.xml called in "oncreateview" of "mainactivity" can't access function... should put database function directly fragment class see those?
here's important part of code:
(in mainactivity.java)
/** * "fragment_database", shows database list */ public static class subfragment extends fragment { public static final string arg_menu_number = "menu_number"; // sub-menu public subfragment() { // empty constructor required fragment subclasses } @override public view oncreateview(layoutinflater inflater, viewgroup container, bundle savedinstancestate) { int = getarguments().getint(arg_menu_number); view rootview; if(i==0){ rootview = inflater.inflate(r.layout.fragment_database, container, false); }else{ rootview = inflater.inflate(r.layout.fragment_help, container, false); } return rootview; } }
here function xml can't reach:
(in database.java)
public void onclick_displayrecords(view v) { displaytext("clicked display record!"); cursor cursor = mydb.getallrows(); displayrecordset(cursor); }
the error message:
java.lang.illegalstateexception: not find method onclick_displayrecords(view) in activity class com.mtl.android.spca.mainactivity onclick handler on view class android.widget.button id 'btndisplay'
databases case singleton.
private static somedatabase instance=null private somedatabase(context context) { .... } public static somedatabase getinstance(context context) { if (instance==null) { instance=new somedatabase(context); } return instance }
then can use anywhere want to, call somedatabase.getinstance(context);
.
however, that's not problem. problem specifying android:onclick
in xml, , trying reference callback in fragment. callbacks go activity. you'll need in java code, specify onclicklistener
manually.
@override public view oncreateview(layoutinflater inflater, viewgroup container, bundle savedinstancestate) { findviewbyid(r.id.button_id).setonclicklistener(new onclicklistener() { @override public void onclick() { nclick_displayrecords() } } ...
Comments
Post a Comment