7-24 頁面邏輯

一拱礁、MainActivity

(一)整體結(jié)構(gòu)(略package+import)

1.public class MainActivity extends Activity

1)聲明成員變量

用private锋边,使外部通過get/set方法來獲取可以獲取的內(nèi)部數(shù)據(jù)通殃。Layout里面有什么舶掖,activity需要用到什么玛臂,就聲明什么

private EditText heightEditText;

private RadioGroup sexRadioGroup;

private Button resetButton;

private String sexString = "男";

*這里的sexString沒有賦初值的話,下面的onCheckedChanged方法就會(huì)崩潰辕近。因?yàn)槟J(rèn)是選擇男韵吨,若果測(cè)試者不改變選項(xiàng)的話,其實(shí)sexString里是沒有值的

2)入口方法 protected void onCreate(Bundle savedInstanceState)?

目錄式結(jié)構(gòu)移宅。只列出會(huì)用到的方法归粉。

tip:聲明完一個(gè)方法后,按Ctrl+1 自動(dòng)創(chuàng)建方法漏峰。

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);//把mainactivity.java和activity_main.xml 聯(lián)系在一起

fineViews();//從布局代碼中找到相應(yīng)的控件

setLisenter();//用于監(jiān)聽糠悼。

3)private void setLisenter()

監(jiān)聽方法。包含多個(gè)內(nèi)部監(jiān)聽類浅乔。給按鈕添加點(diǎn)擊事件OnClickListener倔喂,要重寫OnClickListener()方法。當(dāng)按鈕狀態(tài)轉(zhuǎn)換時(shí)系統(tǒng)會(huì)自動(dòng)調(diào)用OnCheckedChangeListene方法

①sexRadioGroup.setOnCheckedChangeListener ( new OnCheckedChangeListener ( ) {? public void onCheckedChanged(RadioGroup arg0, int arg1 ) {}}? ? ? //設(shè)置RadioGroup狀態(tài)轉(zhuǎn)變時(shí)的監(jiān)聽靖苇。參數(shù)是監(jiān)聽對(duì)象程腹,創(chuàng)建方法是直接new济锄,然后重寫OnCheckedChangeListener()的OnCheckedChangeListener方法

②startTestButton.setOnClickListener ( new OnClickListener ( ) { public void onClick( View v) {}})

4)private void fineViews()

尋找控件遏暴》闵穑基本上用到哪個(gè)控件鲁捏,就要在此方法中 find 哪個(gè)控件芯砸。Ctrl+1 可以自動(dòng)添加強(qiáng)制類型轉(zhuǎn)換萧芙。

heightEditText = (EditText) findViewById(R.id.height_edt);

weightEditText = (EditText) findViewById(R.id.weight_edt);

sexRadioGroup = (RadioGroup) findViewById(R.id.sex_rg);

startTestButton = (Button) findViewById(R.id.start_test_btn);

resetButton = (Button) findViewById(R.id.reset_btn);

(二)局部細(xì)節(jié)

1.intent方法

(1)mainactivity

Intent intent = new Intent(MainActivity.this,BMIResultActivity.class);

跳轉(zhuǎn)頁面:通過intent類的對(duì)象實(shí)現(xiàn),創(chuàng)建intent類對(duì)象實(shí)現(xiàn)假丧,選擇雙參數(shù)構(gòu)造方法new Intent(MainActivity.this,BMIResultActivity.class)双揪。參數(shù)1:從哪個(gè)activity中起跳,參數(shù)2:跳到哪個(gè)activity中

intent.putExtra("height", height);

傳遞數(shù)據(jù):向BMIactivity傳遞數(shù)據(jù)用于顯示包帚,把要傳遞的數(shù)據(jù)放入intent中intent.putExtra(arg1,arg2) arg1是鍵渔期,arg2是值。通過arg1和arg2渴邦,就在intent中保存了一個(gè)鍵值對(duì)(一一對(duì)應(yīng))疯趟,則可通過鍵去找相應(yīng)的值。在取值時(shí)一定要保證鍵相同.

startActivity(intent);

實(shí)現(xiàn)跳轉(zhuǎn)

(2)BMIResultActivity

Intent intent = getIntent();

取出上個(gè)頁面的傳遞值

double height = intent.getDoubleExtra("height", 0);

從intent對(duì)象中谋梭,根據(jù)放入值的鍵來取相應(yīng)值

DecimalFormat format = new DecimalFormat("0.00");

對(duì)數(shù)據(jù)進(jìn)行格式化 DecimalFormat 構(gòu)造參數(shù):數(shù)據(jù)格式字符串信峻。格式化成0.00的格式

bmiTextView.setText("您的BMI指數(shù)為"+format.format(bmi));

把數(shù)據(jù)顯示到控件上

2.public void onCheckedChanged(RadioGroup arg0, int arg1)

參數(shù)①:狀態(tài)改變的RadioGroup對(duì)象。參數(shù)②:RadioGroup對(duì)象中被選中的按鈕的Id瓮床。根據(jù)參數(shù)2確定是哪個(gè)按鈕被選中盹舞。內(nèi)含switch方法或if方法

3.吐司 Toast.makeText()

Toast.makeText(MainActivity.this, "您選擇的性別是"+sexString, 1).show();

參數(shù)1:上下文,說明在那個(gè)頁面顯示吐司隘庄。參數(shù)2:顯示的內(nèi)容踢步。參數(shù)3:顯示的時(shí)間(秒)

4.getText()

String heightString = heightEditText.getText().toString().trim();

用getText()取出輸入內(nèi)容,返回值是Editable對(duì)象可變字符串丑掺。用toString()將其轉(zhuǎn)化為字符串获印,并用trim()方法去除其中沒用的字符,如:回車吼鱼。

5.類型轉(zhuǎn)換

double height = Double.valueOf (heightString)/100;

6.set方法

bodyStateImageView.setBackgroundResource(R.drawable.bmi_4);

bodyStateTextView.setText("您現(xiàn)在處于:\n嚴(yán)重肥胖狀態(tài)蓬豁,請(qǐng)立刻減肥");

在bodyStateTextView這個(gè)TextView里放入圖片和文字。

二菇肃、BMIResultActivity

(一)整體結(jié)構(gòu)

findViews();



三地粪、規(guī)范

(一)命名

1.變量命名

①全英文,不準(zhǔn)有拼音

②首字母小寫琐谤,之后所有單詞的首字母大寫(駝峰式命名法)

③遵循準(zhǔn)則

④變量名后綴盡量不縮寫蟆技,全拼(變量種類很多,可能有縮寫相同斗忌, 無法區(qū)分)

2.類名:所有首字母都大寫

(二)常識(shí)

1.Android 的界面叫activity质礼,包含

1)名字Activity.java(邏輯代碼) 一定是繼承自activity類,頁面邏輯织阳,一般包含

1. onCreate(Bundle savedInstanceState) 加載頁面時(shí)眶蕉,Android系統(tǒng)調(diào)用,程序員只需在oncreate里寫邏輯代碼

2. public boolean onOptionsItemSelected(MenuItem item) 菜單邏輯

3.onOptionsItemSelected(MenuItem item) 菜單某一項(xiàng)被選中

2)名字.xml 頁面的布局文件

2.代碼書寫流程唧躲。在寫方法時(shí)造挽,不要馬上寫方法主邏輯碱璃,應(yīng)該先進(jìn)行異常處理。當(dāng)把所有異常處理完成后饭入,再寫主邏輯嵌器。

3.注意事項(xiàng)

1)判斷字符串是否為空,用textUtils的isEmpty()方法谐丢,而不是用字符串本身(height.isEmpty)

2) 在代碼中用到上下文作為參數(shù)進(jìn)行傳遞時(shí)爽航,一定要確定this確定的是那個(gè)類。

3) activity繼承自Context乾忱,當(dāng)有系統(tǒng)方法要求傳遞Context時(shí)讥珍,有可能就是傳遞activity。(Context有很多子類)

4)前端應(yīng)用要遵循顯示邏輯與數(shù)據(jù)運(yùn)算邏輯分離窄瘟,不能混在一起串述。activity理想狀態(tài)只有控制頁面顯示的代碼。

5) 通過對(duì)象來處理頁面數(shù)據(jù)寞肖,做到數(shù)據(jù)邏輯與代碼邏輯的分離

(三)調(diào)試

1.代碼錯(cuò)誤

當(dāng)bug崩潰時(shí)纲酗,根據(jù)logCat的提示(找自己能看懂的代碼,比如指示了哪一行出錯(cuò)的錯(cuò)誤提示)新蟆。根據(jù)提示觅赊,在這幾行打幾個(gè)斷點(diǎn),用小蟲debug琼稻。debug會(huì)停在斷點(diǎn)處吮螺,鼠標(biāo)放上去會(huì)浮現(xiàn)變量值等具體情況。之后可用步入等一步步調(diào)試帕翻。

如果是數(shù)據(jù)出錯(cuò)鸠补,則順著數(shù)據(jù)流一步步查看。(比如BMI項(xiàng)目中的sexString嘀掸。程序崩潰是因?yàn)閟exString沒有賦初值)

2.代碼沒找出錯(cuò)誤

或許編譯時(shí)出現(xiàn)混亂紫岩,點(diǎn)project->clean... 清空編譯。在點(diǎn)擊右上角DDMS睬塌,左側(cè)菜單欄的擴(kuò)展項(xiàng)目里有“reset adb”泉蝌。再重新編譯。

3.異常處理

在寫主邏輯前先進(jìn)行異常處理揩晴,如BMI項(xiàng)目中未輸入值便點(diǎn)擊測(cè)試按鈕

if (TextUtils.isEmpty(heightString)) {

heightEditText.setError ("請(qǐng)輸入身高");

return;}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末勋陪,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子硫兰,更是在濱河造成了極大的恐慌诅愚,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,386評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件劫映,死亡現(xiàn)場離奇詭異违孝,居然都是意外死亡壕曼,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,142評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門等浊,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人摹蘑,你說我怎么就攤上這事筹燕。” “怎么了衅鹿?”我有些...
    開封第一講書人閱讀 164,704評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵撒踪,是天一觀的道長。 經(jīng)常有香客問我大渤,道長制妄,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,702評(píng)論 1 294
  • 正文 為了忘掉前任泵三,我火速辦了婚禮耕捞,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘烫幕。我一直安慰自己俺抽,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,716評(píng)論 6 392
  • 文/花漫 我一把揭開白布较曼。 她就那樣靜靜地躺著磷斧,像睡著了一般。 火紅的嫁衣襯著肌膚如雪捷犹。 梳的紋絲不亂的頭發(fā)上弛饭,一...
    開封第一講書人閱讀 51,573評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音萍歉,去河邊找鬼侣颂。 笑死,一個(gè)胖子當(dāng)著我的面吹牛枪孩,可吹牛的內(nèi)容都是我干的横蜒。 我是一名探鬼主播,決...
    沈念sama閱讀 40,314評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼销凑,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼丛晌!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起斗幼,我...
    開封第一講書人閱讀 39,230評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤澎蛛,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后蜕窿,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體谋逻,經(jīng)...
    沈念sama閱讀 45,680評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡呆馁,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,873評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了毁兆。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片浙滤。...
    茶點(diǎn)故事閱讀 39,991評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖气堕,靈堂內(nèi)的尸體忽然破棺而出纺腊,到底是詐尸還是另有隱情,我是刑警寧澤茎芭,帶...
    沈念sama閱讀 35,706評(píng)論 5 346
  • 正文 年R本政府宣布揖膜,位于F島的核電站,受9級(jí)特大地震影響梅桩,放射性物質(zhì)發(fā)生泄漏壹粟。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,329評(píng)論 3 330
  • 文/蒙蒙 一宿百、第九天 我趴在偏房一處隱蔽的房頂上張望趁仙。 院中可真熱鬧,春花似錦垦页、人聲如沸幸撕。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,910評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽坐儿。三九已至,卻和暖如春宋光,著一層夾襖步出監(jiān)牢的瞬間貌矿,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,038評(píng)論 1 270
  • 我被黑心中介騙來泰國打工罪佳, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留逛漫,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,158評(píng)論 3 370
  • 正文 我出身青樓赘艳,卻偏偏與公主長得像酌毡,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子蕾管,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,941評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容