一.
创建Activity的要点:
1.继承Activity类
2.需要重写onCreate方法
3.需要在AndroidManifest.xml注册
4.为Activity添加控件和内容
5.setContentView(R.layout.activity_main);设置布局文件
6.TextView myTextView=(TextView)findViewById(R.id.myTextView);获取控件
二、
Intent
1.Component name
2.Action
3.Data
4.Category
5.Extras
6.Flags
通过Intent跳转Activity
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
myButton = (Button) findViewById(R.id.myButton); myButton.setOnClickListener(new MyButtonListener()); } class MyButtonListener implements OnClickListener { @Override public void onClick(View v) { /*// 1.跳转到本程序的Activity * Intent intent=new Intent(); * intent.putExtra("key", "DATA"); * intent.setClass(MainActivity.this, OtherActivity.class); * MainActivity.this.startActivity(intent); */
//2.跳转到外部Activity 如:发送短信
Uri uri = Uri.parse("smsto://0800000123"); Intent intent = new Intent(Intent.ACTION_SENDTO, uri); intent.putExtra("sms_body", "The SMS text"); startActivity(intent); } }
public class OtherActivity extends Activity{
private TextView myTextView=null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.other);
Intent intent=getIntent();//获取Intent
String value=intent.getStringExtra("key");
myTextView=(TextView)findViewById(R.id.textView1);
myTextView.setText(value);
}
}
三、Activity下的菜单
菜单可以在代码中添加,也可以在res.menu.activity.xml文件中添加
@Override public boolean onCreateOptionsMenu(Menu menu) { menu.add(0, 1, 1, R.string.exit);//添加菜单 menu.add(0, 2, 2, R.string.about); getMenuInflater().inflate(R.menu.main, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { int id = item.getItemId();//获取菜单ID if (id == R.id.action_settings) { return true; } else if (id == 1) { finish();// 关闭程序 } else if (id == 2) { return true; } return super.onOptionsItemSelected(item); }
4.Activity生命周期
启动第一个Activity
FirstActivity --> onCreate 创建时
FirstActivity --> onStart 当可见时
FirstActivity --> onResume 可获得焦点时
---------------------------
从第一个Activity进入第二个Activity
FirstActivity --> onPause 启动另外的Activity时调用,比如当接电话时把数据保存
SecondActivity --> onCreate
SecondActivity --> onStart
SecondActivity --> onResume
FirstActivity --> onStop 当不可见时
--------------------------
从第二个Activity回到第一个Activity
SecondActivity --> onPause
FirstActivity --> onStart
FirstActivity --> onResume
SecondActivity --> onStop
SecondActivity --> onDestroy 被销毁时,当明确执行finish()时,或被Android销毁
Activity是以栈的形式进入存在的,当调用finish()时,将不能再回到这个Activity,因为已经被销毁了。
5.在注册Activity的xml文件中,可将Activity的样式改成窗口形式
<activity android:name="com.example.mars_0500_activity04.SecondActivity" android:label="@string/title_activity_second" android:theme="@android:style/Theme.Dialog"> </activity>
6.当Activity处于 onPause 、onStop 、onDestroy 时,在android系统资源部足时,将有可能被kill掉。