1. 一点小感悟
这两天编程天天出现空指针异常、找不到活动什么的异常,总之是各种不在编译执行时报错的异常,而在编写出的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(帧布局)