android - How can I switch between multiple views using a single java class? -
i inherited android studio project no experience java programming. i've been going through , teaching myself using free online tutorials , big nerd ranch guide book , know how switch different .xml views using associated .java classes, want open new .xml view associated same .java class.
basically want modify app have reads information bluetooth device , displays measurements in textview along "pass/fail" display having pass/fail display , "view log" button when clicked, takes new .xml contains textview results.
i'm trying avoid using different .java class because want of items have same functions, on different .xml views, , i'm worried moving have new .java class create more problems have.
i'm not sure if it's necessary, here code: starting screen
frament_bluetooth_scanner.xml: <linearlayout android:layout_width="match_parent" android:layout_height="wrap_content"> <button android:id="@+id/go_to_log" android:layout_width="match_parent" android:layout_height="wrap_content" android:padding="16dp" android:text="@string/view_log" android:textsize="20dp"/> <view android:id="@+id/view" android:layout_width="fill_parent" android:layout_height="2dp" android:background="#ccc"/> </linearlayout> <linearlayout android:orientation="horizontal" android:paddingtop="@dimen/margin_small" android:paddingleft="4dp" android:paddingright="4dp" android:paddingbottom="4dp" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_gravity="center_horizontal"> <button android:id="@+id/button_present" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#ffc4ab" android:clickable="false" android:padding="16dp" android:text="no taggant detected" android:textsize="26dp" /> </linearlayout> button_present both activates bluetooth test , displays pass/fail results. existing , working expected.
go_to_log button added , want click take me next view:
view_list.xml: <framelayout android:orientation="horizontal" android:paddingleft="4dp" android:paddingright="4dp" android:layout_width="match_parent" android:layout_height="fill_parent" android:visibility="visible" android:layout_gravity="center_horizontal"> <button android:layout_width="fill_parent" android:layout_height="40dp" android:text="@string/clear_log" android:id="@+id/button_clear_log" /> <textview android:layout_width="fill_parent" android:layout_height="fill_parent" android:paddingtop="40dp" android:textappearance="?android:attr/textappearancesmall" android:id="@+id/scanlogview" android:maxlines = "4096" android:text="@string/app_name" android:scrollbars = "vertical" android:layout_gravity="center_horizontal"/> </framelayout> all of code in fragment_bluetooth_scanner.xml file , worked expected. problem textview hard read because displayed information tests until cleared, , information didn't fit on screen single test. want change more user friendly.
the main .java file quite long i'll post relevant portions of it. scannerfragment.java:
@override public void onviewcreated(view view, @nullable bundle savedinstancestate) { sp = preferencemanager.getdefaultsharedpreferences(getcontext()); mpoweroffbutton = (button) view.findviewbyid(r.id.button_poweroff); mdisconnectbutton = (button) view.findviewbyid(r.id.button_disconnect); mconnectbutton = (button) view.findviewbyid(r.id.button_connect); mpresence = (button) view.findviewbyid(r.id.button_present); mbattery = (progressbar) view.findviewbyid(r.id.progressbar); mblinkconnect = (button) view.findviewbyid(r.id.button_connectionblink); mblinkdata = (button) view.findviewbyid(r.id.button_communication); mclearlog = (button) view.findviewbyid(r.id.button_clear_log); mdevicename = (button) view.findviewbyid(r.id.button_devicename); mdevicesn = (button) view.findviewbyid(r.id.button_devicesn); mbatteryperc = (textview) view.findviewbyid(r.id.label_batterypct); mreadinglog = (textview) view.findviewbyid(r.id.scanlogview); mreadinglog.setmovementmethod(new scrollingmovementmethod()); mreadinglog.settext(readfromfile()); mviewlog = (button)view.findviewbyid(r.id.go_to_log); telephonymanager = (telephonymanager)getcontext().getsystemservice(context.telephony_service); initlocationservice(this.getcontext()); final actionbar actionbar = getactivity().getactionbar(); if (null == actionbar) { return; } final drawable d = getresources().getdrawable(r.drawable.stardust2); actionbar.setbackgrounddrawable(d); actionbar.settitle(""); } private void setupscanner() { log.d(tag, "setupscanner()"); // initialize send button listener click events mpoweroffbutton.setonclicklistener(new view.onclicklistener() { public void onclick(view v) { if(isiris) { publishmessage(constants.command_poweroff_iris); } else { publishmessage(constants.command_poweroff); } mscannerservice.stop(); } }); // initialize send button listener click events mdisconnectbutton.setonclicklistener(new view.onclicklistener() { public void onclick(view v) { // send message using content of edit text widget publishmessage(constants.command_disconnect); mscannerservice.stop(); } }); // initialize send button listener click events mconnectbutton.setonclicklistener(new view.onclicklistener() { public void onclick(view v) { // send message using content of edit text widget publishmessage(constants.command_on_connect); } }); mclearlog.setonclicklistener(new view.onclicklistener() { public void onclick(view v) { // send message using content of edit text widget mreadinglog.settext(""); if(sp.getboolean("writetofile", true)) { writetofile("", "", false); } } }); this existing actions take place. main thing deters me creating new .java class mreadinglog used throughout class, , don't understand reading/writing text files @ point, want avoid altering has process.
i've gone through tutorials in past such this one, can't find on how open new xml file while associating in same .java class. possible?
i'm not sure understood. if want switch between different views press of button or ... can use viewfilpper.
add view in activity layout.
<viewflipper android:id="@+id/simpleviewflipper" android:layout_width="match_parent" android:layout_height="wrap_content"> <!-- add view’s here want flip -- > <include layout="first"/> <include layout="second"/> <include layout="third"/> <!-- ... --> </ viewflipper >
Comments
Post a Comment