java - My lifecycle codes not compiling -
for each callback events (oncreate(), onstart()... ), record callback event triggered in log(use log.d); message written log should defined in “strings.xml” , getresources.getstring() should used retrieve message
implement onsaveinstancestate , onrestoreinstancestate – track number of times onsaveinstancestate being called, in onrestoreinstancestate, print value log file
tag “log” statement should defined in strings.xml , set using getresources.getstring()
package com.csci235labs.rob_lifecycles; import android.os.bundle; import android.support.v7.app.appcompatactivity; import android.util.log; public class mainactivity extends appcompatactivity { string tag = getresources().getstring(r.string.app_name); //logcat tag string activitystate; int instancetimes; //number of times instance called string act_keys; @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); //recover instance state if(savedinstancestate!=null) { activitystate = savedinstancestate.getstring(act_keys); } else { instancetimes=0; act_keys=""; } setcontentview(r.layout.activity_main); } @override protected void onrestoreinstancestate(bundle savedinstancestate) { super.onrestoreinstancestate(savedinstancestate); } @override protected void onsaveinstancestate(bundle outstate) { instancetimes++; activitystate=string.valueof(instancetimes); outstate.putstring(act_keys,activitystate); super.onsaveinstancestate(outstate); } @override protected void onstart() { super.onstart(); //logs event message string eventmessage=getresources().getstring(r.string.on_start_str); log.d(tag,eventmessage); } @override protected void onresume() { super.onresume(); //logs event message string eventmessage=getresources().getstring(r.string.on_resume_str); log.d(tag,eventmessage); } @override protected void onpause() { super.onpause(); //logs event message string eventmessage=getresources().getstring(r.string.on_pause_str); log.d(tag,eventmessage); } @override protected void onstop() { super.onstop(); //logs event message string eventmessage=getresources().getstring(r.string.on_stop_str); log.d(tag,eventmessage); } @override protected void ondestroy() { super.ondestroy(); //logs event message string eventmessage=getresources().getstring(r.string.on_destroy_str); log.d(tag,eventmessage); } } xml file:
<resources> <string name="app_name">rob_lifecycles</string> <string name="app_str">teststring</string> <string name="on_create_str">oncreate() method</string> <string name="on_start_str">onstart() method</string> <string name="on_resume_str">onresume() method</string> <string name="on_pause_str">onpause() method</string> <string name="on_stop_str">onstop() method</string> <string name="on_destroy_str">ondestroy() method</string> <string name="action_settings">settings</string> </resources>
remove tag initialization outside , move oncreate() because context.getresources() give null pointer exception in case
public class mainactivity extends appcompatactivity { string tag; string activitystate; int instancetimes; //number of times instance called string act_keys; @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); tag = getresources().getstring(r.string.app_name); //logcat tag //recover instance state if(savedinstancestate!=null) { activitystate = savedinstancestate.getstring(act_keys); } else { instancetimes=0; act_keys=""; } }
Comments
Post a Comment