1. 一點小感悟
這兩天編程天天出現null 指標異常、找不到活動什麼的異常,總之是各種不在編譯執行時報錯的異常,而在編寫出的apk應用程式上報錯,我就納悶了,java好歹還給提個錯,Android總是默默無聞的,這點讓我很鬱悶,雖然Android也有專門控制台輸出給提示各種結果吧。。但是提示的總是一瀉千裡,讓編程者乍一看,丈二和尚摸不著頭腦,經老師的點撥終於悟透了其中的奧妙,在這裡與大家分享一下。看見一大推錯誤不要慌。分析思路為:先從錯誤第一行看起,一般都找“fatal exception:main”(致命的意外),然後看他的下一行:比如一個撥號器裡的錯誤:“android.content.ActivityNotFoundException:no Actiivityfound to handle Intent{act=android,intent.action.All_APPsdat=tel:xxx-xxx-xxxx}”
這就找到了錯誤的根源,看一下他的提示不難發現這是Activity活動沒有被發現的異常,返回原始碼可以找出這一行:Intentintent =new Intent(Intent.ACTION_ALL_APPS,Uri.parse("tel"+et.toString()));不難發現這裡的Intent. .ACTION_ALL_APPS打錯代碼了,撥號器嘛,當然是Intent.ACTION_CALL了,最重要也是最容易被忽略的一個問題是:”tel:”,記住tel後面有冒號,千萬不能忘了加,不加會一直提醒你Activity沒有被建立。所以問題到這裡已經解決。
綜上所述,IT行業考驗的就是一個細心和耐心,大部分人一看編寫的時候沒報錯,就沒有了找錯的耐心了,當你有了找錯的思路,再靜下心來,仔細看看Android控制台提示的錯誤,回頭看一下相應提示行的代碼,問題其實很好解決,不好解決的只有你的心態。
2.通過這幾天的學習,列舉一些Android錯誤:
failed to find provider info forcom.google.settings(未能找到資訊,為com.google.settings供應商)
atdalvik.system.NativeStart.main(Native Method)(本機主要方法)
Unable to get view server version fromdevice emulator-5554(無法獲得視圖伺服器版本從裝置模擬器- 5554)
Unable to get view server protocolversion from device emulator-5554(無法獲得視圖伺服器協議版本從裝置模擬器- 5554)
no Activity found to handle Intent(沒有活動發現處理的意圖)
Unable to load the window list from device emulator-5554(無法載入視窗列表從裝置模擬器- 5554)
3.下面把一個簡單的撥號器代碼寫一下。
下圖為效果圖:
packagecn.csdn.hr.activity;
importandroid.app.Activity;
importandroid.content.Intent;
importandroid.net.Uri;
importandroid.os.Bundle;
importandroid.text.Editable;
importandroid.view.View;
importandroid.widget.Button;
importandroid.widget.EditText;
publicclass CallPhoneActivity extends Activity {
/** Called when the activity is firstcreated. */
@Override
public void onCreate(BundlesavedInstanceState) {
super.onCreate(savedInstanceState);
// 設定顯示的視圖介面
setContentView(R.layout.main);
// 擷取該布局檔案中相應的組件
Button callPhoneBtn = (Button)findViewById(R.id.callPhoneBtn);
// 為按鈕註冊點擊事件
callPhoneBtn.setOnClickListener(newView.OnClickListener() {
@Override
public void onClick(View v) {
//擷取輸入框|可編輯框對象,進行撥號設定
EditText editText = (EditText)findViewById(R.id.editCallPhone);
// 擷取輸入的電話號碼
Editable editable =editText.getText();
//設定撥號意圖
Intent intent = newIntent(Intent.ACTION_CALL,Uri.parse("tel:"+editable.toString()));
// “tel:"+editable.toString()”這是固定的格式,撥號設定時必須加上“tel:”首碼;
//執行意圖
startActivity(intent);
}
});
}
}
4.布局
LinearLayout(線性布局)、AbsoluteLayout(絕對布局)、RelativeLayout(相對布局)、TableLayout(表格版面配置)、FrameLayout(幀布局) 布局還分為為水平布局(horizontal)和垂直布局(vertical)。 5.開啟Android模擬器時,出現無訊號,拔打電話或發簡訊時,提示“尚未註冊網路”錯誤資訊的解決方案如下。 l 情境一:你的電腦沒有串連上互連網,同時也沒有在區域網路。 解決辦法:右鍵點擊網路位置,選擇"屬性",在網路連接視窗中右鍵點擊"本地串連",選擇"屬性",設定TCP/IP屬性如下: IP地址:192.168.1.100 子網路遮罩:255.255.255.0 預設閘道:192.168.1.100 首選DNS伺服器:192.168.1.100 l 情境二:你的電腦沒有串連上互連網,但在區域網路。 解決辦法:右鍵點擊網路位置,選擇"屬性",在網路連接視窗中右鍵點擊"本地串連",選擇"屬性",設定TCP/IP屬性如下: IP地址:設定成你所在區域網路的IP,如:192.168.1.100 子網路遮罩:設定成你所在區域網路的掩碼,如:255.255.255.0 預設閘道:設定成你所在區域網路的網關,一般網關的IP格式為:*.*.*.1,如:192.168.1.1 首選DNS伺服器:設定成你所在區域網路的路由器IP,一般路由器的IP格式為:*.*.*.1,如:192.168.1.1 l 最後一種解決方案是:讓你的電腦串連上互連網。