Activity是一种可以包含用户界面的组件,主要用于和用户交互。一个App中可以有多个Activity。
import android.support.v7.ActionBarActivity;import android.os.Bundle;public void MainActivity ectends ActionBarActivity{ @Override protected void onCreate(Bundle savedInstanceState){ super.onCreate(); setContentView(R.id.activity_main); } @Override protected void onStart(){ super.onStart(); } @Override protected void onResume(){ super.onResume(); } @Override protected void onPause(){ super.onPause(); } @Override protected void onStop(){ super.onStop(); } @Override protected void onDestroy(){ super.onDestroy(); } @Override protected void onRestart(){ super.onRestart(); } }
Activity启动后依次执行onCreate(),onStart(),onResume(),当到达onResume状态时Activity就处于可见状态,用户可以与之交互。当Activity1跳转到Activity2时,先执行Activity1的onPause(),再执行Activity2的onCreate()、onStart()、onResume(),最后执行Activity1的onStop()。
Intent:是Android程序中各组件之间进行交互的重要方式
1、显式Intent
Intent intent = new Intent(MainActivity.this,SecondActivity.class);startActivity(intent);//在AndroidManifest.xml中为SecondActivity注册
2、隐式Intent
Intent intent = new Intent("com.example.activitytest.ACTION_START"); startActivity(intent); //AndroidManifest.xml
3、向下一个Activity传递数据
//MainActivity.java//Intent android.content.Intent.putExtra(String name, String value)String data = "Hello SecondActivity";Intent intent = new Intent(MainActivity.this,SecondActivity.class);intent.putExtra("extra_data",data);startActivity(intent);//SecondActivity.javaIntent intent = getIntent();String data = intent.getStringExtra("extra_data");TextView textView = (TextView)findViewById(R.id.textView);textView.setText(data);
4、返回数据给上一个Activity
//MainActivity.java /*void android.support.v4.app.FragmentActivity.startActivityForResult(Intent intent, int requestCode)*/package sunny.example.activityforresult;import android.support.v7.app.ActionBarActivity;import android.content.Intent;import android.os.Bundle;import android.util.Log;import android.view.Menu;import android.view.MenuItem;import android.view.View;import android.widget.Button;import android.widget.TextView;import android.view.View.OnClickListener;public class MainActivity extends ActionBarActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button forResult = (Button)findViewById(R.id.forResult); forResult.setOnClickListener(new OnClickListener(){ @Override public void onClick(View v) { // TODO Auto-generated method stub Intent intent = new Intent(MainActivity.this,SecondActivity.class); /*void android.support.v4.app.FragmentActivity.startActivityForResult(Intent intent, int requestCode)*/ startActivityForResult(intent,1);//requestCode只要是一个唯一值就可以 } }); } @Override protected void onActivityResult(int requestCode,int resultCode,Intent data){ switch(requestCode){ case 1: if(resultCode == RESULT_OK){ String returnData = data.getStringExtra("data_return"); TextView returnd = (TextView)findViewById(R.id.returnd); returnd.setText(returnData ); Log.i("MainActivity",returnData); } break; default: break; } }//SecondActivity.javapackage sunny.example.activityforresult;import android.content.Intent;import android.os.Bundle;import android.support.v7.app.ActionBarActivity;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;public class SecondActivity extends ActionBarActivity{ @Override protected void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.second); Button Back = (Button)findViewById(R.id.back); Back.setOnClickListener(new OnClickListener(){ @Override public void onClick(View v) { // TODO Auto-generated method stub Intent intent = new Intent(); intent.putExtra("data_return", "Hello MainActivity"); //void android.app.Activity.setResult(int resultCode, Intent data) setResult(RESULT_OK,intent); finish(); } }); }}