Udacity Android Practice Note: Lesson 4 Part A
/titer1/archimedes of dry Goods shop chores
Source: Https://code.csdn.net/titer1
Contact: 13,073,161,968 (SMS Best)
Disclaimer: This document is licensed under the following protocols: Free reprint-Non-commercial-non-derivative-retention Attribution | Creative Commons by-nc-nd 3.0, reproduced please specify the author and source.
Tips:https://code.csdn.net/titer1/pat_aha/blob/master/markdown/android/
Preface
This isWeekend Time Last Time, we have learn form theVideo andNow, we areRun theCode directly.let US go.thanks Jackson version change rs232 uart txd rxd CLK115200 TenKusb atLeast5, Transport type1.0Fullspeded <TenM2.0Highspeedd, -M?720P -FPS printer more high than UVC USB mass storage. Dirver-inside3.0> -Mi2c2Line. CLK Data -K bps, command
data,看看 数据里面 有没有 traped in weather station,就知道当前情况了
Other four components
Service
Broad
Content provider
Activity
4.01 Life cycle
以上介绍了 声明周期
!! Hands-on notes life cycle
To see the life cycle of activity is
Look at Mainactivity's logcat, very clear.
Operation Cloth
Enter mainactivity–> detail activity–> back to Mainactivity
And the Main activity–> seting–> back.
为什么能够看到如上的提示,根本原因是有代码logcat,所有的activity life cycle hanlders
OVERVIW Chart
-Contract
-DB Builder
-Content provider One of the four components
4.02 fourth most basic code framework
-Complete Test framework
-Added location Weather's contract
-Added location weather related SQL Builder
4.03 defining database table entries for Locationcontract interpretation
/** * Defines table and column names for the weather database. */
is to define the table contents
The update here is to add a
Column content definition for location table
4.04 Perfect location database-target test weather database creation/insertion
At the database initialization code,
The location of Weatherdbhelper,
Modeled after the creation of the weather database,
Add the following code
Public class weatherdbhelper extends sqliteopenhelper { Static FinalString database_name ="Weather.db";@Override Public void onCreate(Sqlitedatabase sqlitedatabase) {FinalString sql_create_location_table ="CREATE TABLE"+ Locationentry.table_name +" ("+ locationentry._id +"INTEGER PRIMARY KEY,"+ locationentry.column_location_setting +"TEXT UNIQUE is not NULL,"+ Locationentry.column_city_name +"TEXT not NULL,"+ Locationentry.column_coord_lat +"REAL not NULL,"+ Locationentry.column_coord_long +"REAL not NULL"+" );";.... sqlitedatabase.execsql (sql_create_location_table);//Newly addedSqlitedatabase.execsql (sql_create_weather_table);
Enable database to create test program Testcreatedb
Program Introduction
Students:uncomment This test once you ' ve written theCode toCreate theLocation table. Note thatYou'll have toHave chosen theSame column names thatI didinch mySolution forThis test toCompile, soifYou haven ' t yet done that, this isA good Time toChange your column names toMatch mine. Note thatThis is only tests that theLocation table have theCorrect columns,sinceWe give you theCode for theWeather table. This testdoes notLook at the
Enable Test utilites
/ * Students:you can uncomment this helper function once you have finished creating the Locationentry PA RT of the Weathercontract. */ StaticContentvalues Createnorthpolelocationvalues () {//Create a new map of values, where column names is the keysContentvalues testvalues =NewContentvalues (); Testvalues.put (WeatherContract.LocationEntry.COLUMN_LOCATION_SETTING, test_location); Testvalues.put (WeatherContract.LocationEntry.COLUMN_CITY_NAME,"North Pole"); Testvalues.put (WeatherContract.LocationEntry.COLUMN_COORD_LAT,64.7488); Testvalues.put (WeatherContract.LocationEntry.COLUMN_COORD_LONG,-147.353);returnTestvalues; }/ * Students:you can uncomment this function once you have finished creating the locationentry part of T He weathercontract as well as the weatherdbhelper. */ Static LongInsertnorthpolelocationvalues (Context context) {//Insert our test records into the databaseWeatherdbhelper DBHelper =NewWeatherdbhelper (context);//I know that here will create a table sqlitedatabase db = Dbhelper.getwritabledatabase (); Contentvalues testvalues = Testutilities.createnorthpolelocationvalues ();LongLocationrowid; Locationrowid = Db.insert (WeatherContract.LocationEntry.TABLE_NAME,NULL, testvalues);//Insert the test table here //Verify We got a row back.Asserttrue ("error:failure to insert North Pole location Values", Locationrowid! =-1);returnLocationrowid; }
The above three files are updated
4.05 Test Location Table
Here's a recent update
This section can be further refined from the comments
The following section will be enriched with code
/ * Students:here is where you'll build code to test so we can insert and query the location database. We ve done a lot of work for you. You'll want to look in Testutilitie where can uncomment out the "createnorthpolelocationvalues" function. You can also make use of the Validatecurrentrecord function from within Testutilities. */ Public void testlocationtable() {//First Step:get reference to writable database //Create contentvalues of what want to insert //(You can use the createnorthpolelocationvalues if you wish) //Insert contentvalues into database and get a row ID back //Query the database and receive a Cursor back //Move the cursor to a valid database row //Validate data in resulting Cursor with the original contentvalues //(You can use the Validatecurrentrecord function in testutilities to validate the //Query if you like) //Finally, close the cursor and database}```###6Step Test table (Insert/quiery ...) All the updated code in this "' Java Public void testlocationtable() {//First Step:get reference to writable database //If there ' s an error in those massive SQL table creation Strings, //Errors'll is thrown here and you try to get a writable database.Weatherdbhelper DBHelper =NewWeatherdbhelper (Mcontext); Sqlitedatabase db = Dbhelper.getwritabledatabase ();//Second step:create contentvalues of what's want to insert //(You can use the createnorthpolelocationvalues if you wish)Contentvalues testvalues = Testutilities.createnorthpolelocationvalues ();//Third Step:insert contentvalues into database and get a row ID back LongLocationrowid; Locationrowid = Db.insert (WeatherContract.LocationEntry.TABLE_NAME,NULL, testvalues);//Verify We got a row back.Asserttrue (Locationrowid! =-1);//Data ' s inserted. In theory. Now pulling some out to stare at it and verify it made //The round trip. //Fourth Step:query the database and receive a Cursor back //A cursor is your primary interface to the query results.cursor cursor = db.query (WeatherContract.LocationEntry.TABLE_NAME,//Table to Query NULL,//All Columns NULL,//Columns for the "where" clause NULL,//Values for the "where" clause NULL,//Columns to group by NULL,//Columns to filter by row groups NULL //Sort order);//Move the cursor to a valid database row and check to see if we got any records back // from the queryAsserttrue ("Error:no Records returned from location query", Cursor.movetofirst ());//Fifth step:validate data in resulting Cursor with the original contentvalues //(You can use the Validatecurrentrecord function in testutilities to validate the //Query if you like)Testutilities.validatecurrentrecord ("Error:location Query Validation Failed", cursor, testvalues);//Move the cursor to demonstrate this there is a record in the databaseAssertfalse ("Error:more than one record returned from location query", Cursor.movetonext ());//Sixth step:close Cursor and DatabaseCursor.close (); Db.close (); }<div class="Se-preview-section-delimiter"></div>
!! Todo effect
This is waiting for the internet, there should be a specific display,
Initially see there are several assert
Operating method: Lesson 4a 28-sqliteopenhelper and Sunshine Database.mp4
I put the problem of the environment to run the method has been sorted, to be updated later
4.06 Test Weather Table
As with the above, only Testdb.java is modified.
编辑器里面 有 主题切换,可以后界面颜色 ,字体,保护眼睛,你懂的<divclass="se-preview-section-delimiter"></div>
- It's not just like a test*****talbe function that's been re-written.
In the Testweathertalbe program, the code for the Testloactiontalbe is called First,
The code is encapsulated as insertlocation, but the content is testlocationtable.
The return value of the function is the ROWID after the corresponding item query.
The code for both joins is as follows,
long locationRowId = insertLocation(); // Second Step (Weather): Create weather values ContentValues weatherValues = TestUtilities.createWeatherValues(locationRowId); //*.insert //*.queryclass="se-preview-section-delimiter"></div>
至于是否起到 外键的作用,待证明
Nap time
At this point, the logic is correct, two data tables are tested
The goal for the future is 4.24. There's a lot more.
-Give a preliminary table frame to create the weather table
-Create a location table
-Fill Test location
-Fill test Weather location (insert query ..., call the result of Testlocation)
In a word, midterm 4.06 is a small milestone.
Udacity Android Practice Note: Lesson 4 Part A