單步除錯 (1/10) 打開 Android Studio, 點選 Start a new Android Studio project 建立專案 Application name 輸入 BMI 點下 Next 2 P a g e

Similar documents
多媒體應用 13 新增專案並完成版面配置 <ExMusic01> <activity_main.xml> ImageView ID imgplay ImageView ID imgstop ImageView ID imgfront TextView ID txtsong TextView ID t

主程式 : public class Main3Activity extends AppCompatActivity { ListView listview; // 先整理資料來源,listitem.xml 需要傳入三種資料 : 圖片 狗狗名字 狗狗生日 // 狗狗圖片 int[] pic =new

用手機直接傳值不透過網頁連接, 來當作搖控器控制家電 ( 電視遙控器 ) 按下按鍵發送同時會回傳值來確定是否有送出 問題 :1. 應該是使用了太多 thread 導致在傳值上有問題 2. 一次按很多次按鈕沒辦法即時反應

res/layout 目录下的 main.xml 源码 : <?xml version="1.0" encoding="utf 8"?> <TabHost android:layout_height="fill_parent" xml

Dynamic Layout in Android

预览图 : (2) 在 SelectCity.java 中增加控件, 用于绑定 select_city 文件的 ListView, TextView,EditTest 等控件 代码和注释如下 :

詞 彙 表 編 號 詞 彙 描 述 1 預 約 人 資 料 中 文 姓 名 英 文 姓 名 身 份 證 字 號 預 約 人 電 話 性 別 2 付 款 資 料 信 用 卡 別 信 用 卡 號 信 用 卡 有 效 日 期 3 住 房 條 件 入 住 日 期 退 房 日 期 人 數 房 間 數 量 入

0511-Android程式之GPS應用_專題週記4

建立Android新專案

Android Service

Database_001

任務二 : 產生 20 個有炸彈的磚塊, 放在隨機的位置編輯 Block 類別的程式碼 import greenfoot.; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo) Write a description of class

Android Fragment

ShareText

Microsoft Word - 02.目錄.doc

RecyclerView and CardVew

建模与图形思考

javaexample-02.pdf

1: public class MyOutputStream implements AutoCloseable { 3: public void close() throws IOException { 4: throw new IOException(); 5: } 6:

Microsoft Word - 01.DOC

Android Android Android SDK iv

OOP with Java 通知 Project 4: 4 月 18 日晚 9 点 关于抄袭 没有分数

國人之健康行為初探

( )

Android + NFC

<4D F736F F F696E74202D20332D322E432B2BC3E6CFF2B6D4CFF3B3CCD0F2C9E8BCC6A1AAD6D8D4D8A1A2BCCCB3D0A1A2B6E0CCACBACDBEDBBACF2E707074>

建立Android新專案

附录J:Eclipse教程

图 6-1 主界面 MainActivity 界面对应的布局文件 (activity_main.xml) 如下所示 : <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="

第一章.FIT)

大 綱 最 有 利 標 目 的 及 類 型 最 有 利 標 之 辦 理 方 式 準 用 最 有 利 標 取 最 有 利 標 精 神 最 有 利 標 之 類 型 及 其 相 關 規 定 適 用 最 有 利 標 準 用 最 有 利 標 及 取 最 有 利 標 精 神 作 業 程 序 及 實 務 分 析

建模与图形思考

Android 开发教程

使 用 Java 语 言 模 拟 保 险 箱 容 量 门 板 厚 度 箱 体 厚 度 属 性 锁 具 类 型 开 保 险 箱 关 保 险 箱 动 作 存 取 款

JavaIO.PDF

题目

untitled

Lecture01_Android介绍

OOP with Java 通知 Project 4: 4 月 19 日晚 9 点

《大话设计模式》第一章

<ADB6ADB1C25EA8FAA6DB2D4D56432E706466>

Microsoft PowerPoint - 07.Android 介面元件-TableLayout、Toast、AlertDialog

國立臺東高級中學102學年度第一學期第二次期中考高一國文科試題

Page 2 of 12

Microsoft Word - Sunday

鎶ョ焊0

<D2B0D0C4D3C5D1C52DC8CED6BEC7BF202D20BCC7CAC2B1BE>

秘密大乘佛法(下)

!! :!!??!!?!??!!!... :... :'?'?! :' ' :'?' :'?' :'!' : :? Page 2

1.5招募说明书(草案)

Chapter 9: Objects and Classes

Microsoft Word - ch04三校.doc

KillTest 质量更高 服务更好 学习资料 半年免费更新服务

Lecture01_Android介绍

2009年3月全国计算机等级考试二级Java语言程序设计笔试试题

Microsoft PowerPoint - 03 开发入门.ppt [兼容模式]

PowerPoint 簡報

untitled

untitled

Microsoft Word - 第3章.doc


幻灯片 1

(TestFailure) JUnit Framework AssertionFailedError JUnit Composite TestSuite Test TestSuite run() run() JUnit

麻 省 理 工 學 院 是 在 西 元 2013 年 12 月 3 日 推 出 MIT App Inventor 2 網 站, 提 供 免 費 的 雲 端 服 務, 使 用 者 可 以 透 過 瀏 覽 器 來 開 發 Android 裝 置 應 用 程 式, 該 網 站 的 網 址 為 : http

版权声明

Java

任务实施 (1) 创建项目 图 3-1 欢迎界面 首先创建一个工程, 将其命名为 BoXueGu, 指定包名为 com.boxuegu (2) 导入界面图片将欢迎界面所需要的背景图片 launch_bg.png 导入到 drawable 文件夹中, 项目的 icon 图标 app_icon.png

1.JasperReport ireport JasperReport ireport JDK JDK JDK JDK ant ant...6

投影片 1

Chapter 9: Objects and Classes

Microsoft Word - 第3章.doc

untitled

Microsoft PowerPoint - L17_Inheritance_v4.pptx

epub83-1

Android 开发教程

書面

運算子多載 Operator Overloading

目 錄 一 ANDROID 開發系統需求 作業系統 開發工具... 1 二 安裝 ANDROID 開發工具 安裝 JDK 使用 APT-GET 安裝 使用套件管理程式安裝... 9 三 ANDROID 程式撰寫... 1


9, : Java 19., [4 ]. 3 Apla2Java Apla PAR,Apla2Java Apla Java.,Apla,,, 1. 1 Apla Apla A[J ] Get elem (set A) A J A B Intersection(set A,set B) A B A B

Android 开发教程

Android + WebService

03 开发入门.key

OOP with Java 通知 Project 4: 5 月 2 日晚 9 点

Adobe® Flash® 的 Adobe® ActionScript® 3.0 程式設計

The Embedded computing platform

C 1

untitled

1 Framework.NET Framework Microsoft Windows.NET Framework.NET Framework NOTE.NET NET Framework.NET Framework 2.0 ( 3 ).NET Framework 2.0.NET F

软件工程文档编制

mvc

EJB-Programming-4-cn.doc

untitled

Spyder Anaconda Spyder Python Spyder Python Spyder Spyder Spyder 開始 \ 所有程式 \ Anaconda3 (64-bit) \ Spyder Spyder IPython Python IPython Sp

Strings

OOP with Java 通知 Project 3: 3 月 29 日晚 9 点 4 月 1 日上课

實作SQLiteOpenHelper類別

untitled

Android TSC Bluetooth/Ethernet 函式庫使用說明 1. openport(a) Bluetooth openport(a) 說明 : 指定電腦端的輸出埠參數 : a: 字串型別直接指定 Bluetooth MacAdress, 如 00:19:0E:A0:04:E1 Et

untitled

Transcription:

Android Studio Debugging 本篇教學除了最基本的中斷點教學之外, 還有條件式中斷的教學 條件式中斷是進階的除錯技巧, 在某些特定情況中, 我們有一個函數可能會被呼叫數次, 但是我們只希望在某種條件成立時才進行中斷, 進而觀察變數的狀態 而條件式中斷這項技巧正是符合這項需求 本教學分兩部分 單步除錯 (Page2~11, 共 10) 條件式中斷點 (Page12~17, 共 6) 1 P a g e

單步除錯 (1/10) 打開 Android Studio, 點選 Start a new Android Studio project 建立專案 Application name 輸入 BMI 點下 Next 2 P a g e

單步除錯 (2/10) 點下 Next Next 3 P a g e

單步除錯 (3/10) Finish, 這邊需要等候一下 請在 res/layout/activity_main.xml 填入下頁的程式碼 4 P a g e

單步除錯 (4/10) <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_height="match_parent" android:padding="10dp" android:orientation="vertical"> <LinearLayout > <TextView android:layout_width="wrap_content" android:text="height"/> <EditText android:id="@+id/heightedittext" /> </LinearLayout> <LinearLayout > <TextView android:layout_width="wrap_content" android:text="weight"/> <EditText android:id="@+id/weightedittext" /> </LinearLayout> <Button android:id="@+id/calcbutton" android:text="calc" android:onclick="clickbutton"/> <TextView android:id="@+id/bmitextview" /> </LinearLayout> 5 P a g e

單步除錯 (5/10) 在 java/mainactivity 填入以下程式碼, 你可能要適時地修改 package 名稱 package game.csie.ntut.edu.tw.bmi; import android.app.activity; import android.os.bundle; import android.view.view; import android.widget.edittext; import android.widget.textview; public class MainActivity extends Activity { EditText heightedittext; EditText weightedittext; TextView bmitextview; @Override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); heightedittext = (EditText) findviewbyid(r.id.heightedittext); weightedittext = (EditText) findviewbyid(r.id.weightedittext); bmitextview = (TextView) findviewbyid(r.id.bmitextview); public void clickbutton(view view){ double height = 0, weight= 0; double bmi; height = Double.parseDouble(heightEditText.getText().toString()); bmi = weight / (height * height); bmitextview.settext("bmi:" + bmi); 6 P a g e

單步除錯 (6/10) 執行專案發現執行結果錯誤, 開始進行 Debug 點擊 bmitextview. 這一行的左方, 開啟中斷點 7 P a g e

單步除錯 (7/10) 使用 Debug 來進行除錯 使用 Step Over(F8) 可直接跳過一行 8 P a g e

單步除錯 (8/10) 使用 Step Into(F7) 可進入函數內部 使用 Force Step Into(Alt+Shift+F7) 可強制進入函數 9 P a g e

單步除錯 (9/10) 使用 Step Out(Shift+F8) 可直接跳出函數 我們觀看下方 Variables 視窗, 可發現 weight 的值 =0, 需要進行修改 10 P a g e

單步除錯 (10/10) 加入程式碼 weight = Double.parseDouble(weightEditText.getText().toString()); 成功 11 P a g e

條件式中斷點 (1/6) 請仿造前一個範例建立一個專案 請在 res/layout/activity_main.xml 填入下頁的程式碼 12 P a g e

條件式中斷點 (2/6) <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_height="match_parent" android:padding="10dp" android:orientation="vertical"> <LinearLayout > <TextView android:layout_width="wrap_content" android:textappearance="?android:attr/textappearancemedium" android:text="init" /> <EditText android:id="@+id/initedittext" android:editable="false"/> </LinearLayout> <Button android:layout_width="wrap_content" android:layout_margintop="10dp" android:text="bubble Sort" android:onclick="sortbuttonclick"/> <LinearLayout android:layout_margintop="10dp"> <TextView android:layout_width="wrap_content" android:text="result" android:textappearance="?android:attr/textappearancemedium" /> <EditText android:id="@+id/resultedittext" android:editable="false" /> </LinearLayout> </LinearLayout> 13 P a g e

條件式中斷點 (3/6) 在 java/mainactivity 填入下頁程式碼, 你可能要適時地修改 package 名稱 14 P a g e

條件式中斷點 (4/6) package tw.edu.ntut.csie.test2; import android.app.activity; import android.os.bundle; import android.view.view; import android.widget.edittext; public class MainActivity extends Activity { final int[] num = new int[]{12, 42, 23, 51, 8; final int length = num.length; @Override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); EditText edittext = (EditText) findviewbyid(r.id.initedittext); edittext.settext(convertarraytostring(num)); public void sortbuttonclick(view v) { bubblesort(num, length); EditText resultedittext = (EditText) findviewbyid(r.id.resultedittext); resultedittext.settext(convertarraytostring(num)); private String convertarraytostring(int[] num) { String result = ""; for (int i : num) { if (result.equals("")) result = i + ""; else result += ", " + i; return result; private void swap(int num[], int indexa, int indexb) { int tmp = num[indexa]; num[indexb] = num[indexa]; num[indexb] = tmp; private void bubblesort(int num[], int length) { for (int i = length - 1; i > 0; --i) { for (int j = 0; j < i; ++j) { if (num[j] > num[j + 1]) { swap(num, j, j + 1); 15 P a g e

條件式中斷點 (5/6) 執行專案發現結果有錯誤, 開始進行除錯 在 if 敘述下中斷點, 並且在中斷點按下右鍵, 輸入我們想要停下的條件 num[j]==42, 待條件成立, 程式將會暫停 16 P a g e

條件式中斷點 (6/6) 執行後我們發現是 swap 函數出了錯誤, 將程式碼修改如下 : private void swap(int num[], int indexa, int indexb) { int tmp = num[indexa]; num[indexa] = num[indexb]; num[indexb] = tmp; 成功 17 P a g e