四大组件:Activity,Broadcast,Service和ContentProvider。
1.Activity是最基本的Android应用程序组件,应用程序中,一个Activity通常就是一个单独的屏幕。每个Activity都被实现为一个独立的类,并且从Activity基类继承而来,Activity类会显示视图控制组件,并对事件作出响应,大多数应用程序都是有多个Activity组成的。
2.Broadcast是Android系统中常用的一种机制,让应用对一个外部的事件作出响应。
3.Service一个服务是具有一个较长生命周期且没有用户界面的程序。
4.ContentProvider应用程序能够将它们的数据保存到文件、SQLite数据库中,甚至是任何有效的设备中。当需要将应用数据与其他的应用共享时,内容提供者类实现了一组标准的方法,从而能够让其他的应用保存或读取此内容提供器处理的各种数据类型。
事件:是指在什么情况下所发生的事情。
事件源:指在什么地方发生的事件,(例如:在本次案例中所指的点击事件)。
在此次编程中,一直出现下面这样的情况,那应该如何解决呢?
<span style="font-size:14px;"> E/AndroidRuntime(983): Caused by: java.lang.ClassCastException: android.widget.EditText cannot be cast to android.widget.Button</span>
之所以出现错误,原因其实很简单,组件类型不一致。
在xml中
<resources>
<string name="app_name">helloAndroid</string>
<string name="action_settings">Settings</string>
<string name="tv_namePrompt">请输入你的姓名</string>
<string name="<span style="color:#ff0000;">btn_Click</span>">请点击我</string>
</resources>
在 MainActivity中
public class MainActivity extends Activity {
public static final String TAG="MainActivity";
private EditText etName;
private Button <span style="color:#ff0000;">btnClick</span>;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//获取事件源
<span style="color:#ff0000;">btnClick</span>=(Button) findViewById(R.id.btnClick);
etName =(EditText) findViewById(R.id.etName);
<span style="color:#ff0000;">btnClick</span>.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
String name = etName.getText().toString();
Log.d(TAG,"name="+name);
Toast.makeText(MainActivity.this,"hello,"+name,Toast.LENGTH_LONG).show();
}
});
}
}