In the previous chapter we review the creation of activity and the life cycle, which we mainly learn about activity jumps and data transfer between activity.
First, activity jumps:
The simple jump between activity is simply a matter of creating two activity and then using startactivity (intent) to jump and see the code:
Intent uio=New Intent (thisactivityclass,activitybclass); startactivity (UiO);
What is intent?
Android provides the intent mechanism to assist the interaction and communication between applications, intent is responsible for the action of one operation in the application, the action involves data, the additional data description, Android according to this intent description, is responsible for finding the corresponding component, will Intent is passed to the calling component and completes the call to the component. Intent can be used not only between applications, but also between Activity/service within an application. As a result, intent plays a role as a media intermediary, specifically providing information about the components that are called to each other, and decoupling the caller from the callee.
Ii. data transfer between activity:
Below we complete an activity jump pass data and return parameters of example, from activity a click a button, jump to activity b,activity B has two buttons, respectively click two buttons, the interface back to the activity A and use Toast to show different return parameters
1. In activity A, add the data to the bundle in bulk and add the bundle into the intent
Intent in1=New Intent (this,activityb.class); Bundle BUN1=new bundle (); Bun1.putstring ("name", "Baihua"); Bun1.putstring ("Age", "" "); In1.putextras (BUN1);
2.Activity a button click event to do activity jump, and use Startactivityforresult (Intent Intent, int requestcode) method to open a new activity, When a new activity is closed, it returns data to the previous activity
Startactivityforresult (in1,30)
3.Acitivity B return value, we need to get the new activity of the callback data for logic processing, need to rewrite onactivityresult (int requestcode,int resultcode,intent data), Here we define the functional requirements, if the request code is 30, we click on the Activity B button, return to the student number 30 students information, if the request code is 31, we click on the Activity B button, return to the student number 31 students information; Activity B, click button 1, To return the student's name, click Button 2 to return the student's age
First we deal with the data returned in activity B
Public voidBaihinfo (View v)//the name of the student who corresponds to the study number{Intent in1=NewIntent (); In1.putextra ("Name", "Baih"); In1.putextra ("Age", "24"); Setresult (2, in1); Using Setresult to return data to activity A, the previous parameter is the return result code finish (); Close the activity when the function is finished processing} Public voidZzzinfo (View v)//age of the corresponding student number{Intent in2=NewIntent (); In2.putextra ("Name", "zzz"); In2.putextra ("Age", "28"); Setresult (1, in2); Finish (); Close the activity when the function is finished processing}
4. Handle the logic of getting activity B's return result code in activity A, overriding onactivityresult
Public voidOnactivityresult (intRequestcode,intresultcode,intent data) { if(requestcode==30)//To determine if the request code in activity a click event is 30, the student who returned to study number 30 {if(resultcode==1)//Judge if the return result code is 1, use. Getextras (). getString () Get the name of 30 students, for others to get the age, here the logic can be more fine, not much write {Bundle er
=Data.getextras (); String T=er.getstring ("name"); LOG.E ("Baih", T); Toast.maketext (mainactivity. This, T, 2000). Show (); } Else{Bundle San=Data.getextras (); String y=san.getstring ("Age"); LOG.E ("Baih", y); Toast.maketext (mainactivity. This, Y, 2000). Show ();; } } Else{ if(requestcode==31) //To determine if the request code in activity a click event is 31, the student who returned to study number 31 {if(resultcode==1) {Bundle er1=Data.getextras (); String x=er1.getstring ("name"); LOG.E ("Baih", x); Toast.maketext (mainactivity. This, X, 2000). Show (); } Else{Bundle San1=Data.getextras (); String Z=san1.getstring ("Age"); LOG.E ("Baih", z); Toast.maketext (mainactivity. This, Z, 2000). Show ();; } } }
The variable does not go the rule, in fact this position, mainly wants to introduce two parameters, Requestcode and ResultCode
Requestcode is the request code, using the Startactivityforresult (Intent Intent, int requestcode) method to open the new activity, We need to pass in a request code (the second parameter) for the Startactivityforresult () method. The value of the request code is self-set according to the business need and is used to identify the source of the request. For example: An activity with two buttons, click on both buttons will open the same activity, whether it is the button to open the new activity, when the new activity is closed, the system will call the previous activity Onactivityresult (int requestcode, int resultcode, Intent data) method. In the Onactivityresult () method, if you need to know that the new activity is opened by that button, and you want to make the appropriate business processing
ResultCode is a result code that, in an activity, may use the Startactivityforresult () method to open several different activities to handle different businesses, and when these new activity is closed, The system invokes the previous activity's onactivityresult (int requestcode, int resultcode, Intent data) method. In order to know which new activity the returned data came from
Two very important parameters, which are responsible for controlling the logic control and judgment between the activity data transmission.
Activity transmits data using Intent.putextra (String key,value) for a single parameter pass, or set data parameters into bundles, using Intent.putextra (bundle extras) For centralized transport
Four components of the Android development Learning Note---Activity jump, data Transfer (ii)