Android四大组件之——Activity的开启:StartActivity()和StartActivityForResult()(图文详解)

     

      如需转载请在文章开头处注明本博客网址:http://www.cnblogs.com/JohnTsai

      联系方式:[email protected]

      [Android四大组件学习系列Activity篇]

       1.Android四大组件之——Activity(一)定义、状态和后退栈(图文详解)

2.Android四大组件之——Activity的生命周期(图文详解)

3.Android四大组件之——Activity的开启StartActivity()和StartActivityForResult()(图文详解)

前两次学习了Activity的基本概念和生命周期,今天学习一下Activity的跳转和值传递。

废话不多说,开始学习!

  • Activity的开启

       开启一个新的Activity有两种方法:

startActivity(Intent)和startActivityForResult(Intent,int)。

startActivity(Intent):

用于开启一个新的Activity,新Activity压入栈顶。参数Intent用于描述新Activity。

startActivityForResult(Intent,int):

用于开启新Activity,新Activity退出后,返回结果给旧Activity。

startActivity好理解,startActivityForResult()就麻烦一点,下面这张图方便我们的理解:

说明一下:

requestCode,请求码,自己随意设置,但必须是非负数。只有是非负数时,Activity退出时,这个码会返回到onActivityResult()。

resultCode,结果码,用于标识返回数据来自于哪个新Activity,它的值一般是

RESULT_CANCELED, RESULT_OK, RESULT_FIRST_USER。

写了一个关于开启Activity的Demo:

共三个Activity:MainActivity用户填写用户姓名电话城市、CityActivity用于用户选择城市,ShowActivity用于展示用户信息。

MainActivity:

 1 package com.johntsai.startactivity;
 2
 3 import android.app.Activity;
 4 import android.content.Intent;
 5 import android.database.Cursor;
 6 import android.net.Uri;
 7 import android.os.Bundle;
 8 import android.provider.ContactsContract.CommonDataKinds.Phone;
 9 import android.view.View;
10 import android.view.View.OnClickListener;
11 import android.widget.Button;
12 import android.widget.EditText;
13
14 public class MainActivity extends Activity implements OnClickListener {
15
16     private Button button_city,button_phone,button_save;
17     private EditText editText_city,editText_name,editText_phone;
18     private static final int SELECT_CITY_REQUEST =2;
19     private static final int SELECT_PHONE_REQUEST =3;
20
21     @Override
22     protected void onCreate(Bundle savedInstanceState) {
23         super.onCreate(savedInstanceState);
24         setContentView(R.layout.activity_main);
25
26        button_city = (Button)findViewById(R.id.button_city);
27        button_phone = (Button)findViewById(R.id.button_phone);
28        button_save = (Button)findViewById(R.id.button_save);
29        editText_city = (EditText)findViewById(R.id.editText_city);
30        editText_name = (EditText)findViewById(R.id.editText_name);
31        editText_phone = (EditText)findViewById(R.id.editText_Phone);
32
33        button_city.setOnClickListener(this);
34        button_phone.setOnClickListener(this);
35        button_save.setOnClickListener(this);
36     }
37     @Override
38     public void onClick(View v) {
39          switch (v.getId()) {
40         case R.id.button_city:
41             Intent i = new Intent ();
42             i.setClass(MainActivity.this, CityActivity.class);
43             startActivityForResult(i, SELECT_CITY_REQUEST);
44             break;
45         case R.id.button_phone:
46              Intent pickContactIntent = new Intent(Intent.ACTION_PICK, Uri.parse("content://contacts"));
47              pickContactIntent.setType(Phone.CONTENT_TYPE);
48              startActivityForResult(pickContactIntent, SELECT_PHONE_REQUEST);
49             break;
50         case R.id.button_save:
51             String name=editText_name.getText().toString();
52             String city = editText_city.getText().toString();
53             String phone = editText_phone.getText().toString();
54             Intent saveIntent = new Intent(MainActivity.this,ShowActivity.class);
55             saveIntent.putExtra("content", "NAME: "+name+"\nCITY:   "+city+"\nPHONE"+phone);
56             startActivity(saveIntent);
57             break;
58         default:
59             break;
60         }
61     }
62
63     @Override
64     protected void onActivityResult(int requestCode, int resultCode, Intent data) {
65         if(SELECT_CITY_REQUEST == requestCode){
66             if(resultCode ==RESULT_OK){
67                 String city = data.getStringExtra("city");
68                 editText_city.setText(city);
69             }
70         }
71         if(SELECT_PHONE_REQUEST == requestCode){
72             if(resultCode == RESULT_OK){
73                  Uri contactData = data.getData();
74                  String [] projection ={Phone.NUMBER};
75                  Cursor c = getContentResolver()
76                          .query(contactData, projection, null, null, null);
77                  c.moveToFirst();
78                  int column =c.getColumnIndex(Phone.NUMBER);
79                  String num = c.getString(column);
80                  editText_phone.setText(num);
81             }
82         }
83         super.onActivityResult(requestCode, resultCode, data);
84     }
85 }

  1 package com.johntsai.startactivity;
  2
  3
  4 import android.app.Activity;
  5 import android.content.Intent;
  6 import android.os.Bundle;
  7 import android.view.Gravity;
  8 import android.view.View;
  9 import android.view.ViewGroup;
 10 import android.widget.AbsListView;
 11 import android.widget.BaseExpandableListAdapter;
 12 import android.widget.ExpandableListAdapter;
 13 import android.widget.ExpandableListView;
 14 import android.widget.LinearLayout;
 15 import android.widget.TextView;
 16 import android.widget.Toast;
 17
 18 public class CityActivity extends Activity {
 19
 20      private     ExpandableListView eListView;
 21     @Override
 22     protected void onCreate(Bundle savedInstanceState) {
 23
 24          super.onCreate(savedInstanceState);
 25          setContentView(R.layout.layout_city);
 26          initEListView();
 27     }
 28
 29      //初始化
 30      private void initEListView(){
 31             ExpandableListAdapter adapter = new BaseExpandableListAdapter() {
 32
 33
 34                 private String [] countries = new String[]{
 35                         "China","USA","UK"
 36                 };
 37
 38                 private String [][] cities = new String[][]{
 39                         {"BeiJing","ShangHai","HongKong","TaiBei"},
 40                         {"Washington","New York","Los Angles","San Fransico"},
 41                         {"London","Manchester","Birmingham","Liverpool"}
 42                 };
 43                 private TextView getTextView(){
 44                     AbsListView.LayoutParams lp = new AbsListView.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,
 45                             ViewGroup.LayoutParams.WRAP_CONTENT);
 46                     TextView textView = new TextView(CityActivity.this);
 47                     textView.setLayoutParams(lp);
 48                     textView.setGravity(Gravity.CENTER_HORIZONTAL);
 49                     textView.setPadding(0, 0, 0, 0);
 50                     textView.setTextSize(20);
 51                     return textView;
 52
 53                 }
 54                 @Override
 55                 public boolean isChildSelectable(int groupPosition, int childPosition) {
 56                     Toast.makeText(CityActivity.this, "you have clicked Group:"+groupPosition+"Child:"+childPosition+"\n"+countries[groupPosition]+"  "+cities[groupPosition][childPosition],
 57                             Toast.LENGTH_SHORT).show();
 58                     Intent i = new Intent();
 59                     i.putExtra("city", cities[groupPosition][childPosition]);
 60                     setResult(RESULT_OK, i);
 61                     finish();
 62                     return true;
 63                 }
 64
 65                 @Override
 66                 public boolean hasStableIds() {
 67                     return true;
 68                 }
 69
 70                 @Override
 71                 public View getGroupView(int groupPosition, boolean isExpanded,
 72                         View convertView, ViewGroup parent) {
 73                     LinearLayout linearLayout = new LinearLayout(CityActivity.this);
 74                     linearLayout.setOrientation(0);
 75
 76                     TextView textView = getTextView();
 77                     textView.setText(getGroup(groupPosition).toString());
 78                     linearLayout.addView(textView);
 79                     return linearLayout;
 80                 }
 81                 @Override
 82                 public long getGroupId(int groupPosition) {
 83                     return groupPosition;
 84                 }
 85
 86                 @Override
 87                 public int getGroupCount() {
 88                     return countries.length;
 89                 }
 90
 91                 @Override
 92                 public Object getGroup(int groupPosition) {
 93                     return countries[groupPosition];
 94                 }
 95
 96                 @Override
 97                 public int getChildrenCount(int groupPosition) {
 98                     return cities[groupPosition].length;
 99                 }
100
101                 @Override
102                 public View getChildView(int groupPosition, int childPosition,
103                         boolean isLastChild, View convertView, ViewGroup parent) {
104                      TextView textView = getTextView();
105                      textView.setText(getChild(groupPosition, childPosition).toString());
106                      textView.setGravity(Gravity.CENTER_HORIZONTAL);
107                      return textView;
108                 }
109
110                 @Override
111                 public long getChildId(int groupPosition, int childPosition) {
112                       return childPosition;
113                 }
114
115                 @Override
116                 public Object getChild(int groupPosition, int childPosition) {
117                     return cities[groupPosition][childPosition];
118                 }
119             };
120              eListView = (ExpandableListView)findViewById(R.id.expandableListView);
121              eListView.setAdapter(adapter);
122      }
123 }

CityActivity

 1 package com.johntsai.startactivity;
 2
 3 import android.app.Activity;
 4 import android.content.Intent;
 5 import android.os.Bundle;
 6 import android.widget.TextView;
 7
 8 public class ShowActivity extends Activity {
 9     private TextView showTextView;
10     @Override
11     protected void onCreate(Bundle savedInstanceState) {
12          super.onCreate(savedInstanceState);
13          setContentView(R.layout.layout_show);
14          showTextView = (TextView)findViewById(R.id.textView_show);
15
16          Intent i =getIntent();
17          String content = i.getStringExtra("content");
18          showTextView.setText(content);
19     }
20 }

ShowActivity

Demo运行效果图

                      

                        

如果喜欢,请推荐!谢谢~

时间: 2024-10-25 18:50:55

Android四大组件之——Activity的开启:StartActivity()和StartActivityForResult()(图文详解)的相关文章

Android四大组件之Activity详解 · yclog

Activity生命周期: onCreate:在Acitivty第一次创建时调用,用于做初始化的工作onStart:onCreate调用后调用,此次界面对用户来说无法看见onResume:此次界面可见并显示到前台,且当前Acitvity位于当前栈顶,并且处于运行状态onPause:表示当前Activity正在停止,常做一些存储数据.停止动画等工作(不做耗时操作)onStop:表示当前Activity即将停止,一般做微量级的回收工作onDestory:表示当前Activity即将被销毁,可做一些回

Android学习之路——Android四大组件之activity(二)

上一篇讲了activity的创建和启动,这一篇,我们来讲讲activity的数据传递 activity之间的数据传递,这里主要介绍的是activity之间简单数据的传递,直接用bundle传递基本数据类型的数据.还有一种数据类型是parcelable和serialable 用bundle 传递数据有两种情况,这篇文章就分别从两个方面说明一下. 一.利用bundle传递基本数据类型 1.启动时传递数据,使用intent的put方法,将数据写入bundle中,然后startActivity(inte

【Android的从零单排开发日记】之入门篇(四)——Android四大组件之Activity

在Android中,无论是开发者还是用户,接触最多的就算是Activity.它是Android中最复杂.最核心的组件.Activity组件是负责与用户进行交互的组件,它的设计理念在很多方面都和Web页面类似.当然,这种相似性主要体现在设计思想上.在具体实现方面,Android的Activity组件有自己的设计规范,同时,它能够更简便地使用线程.文件数据等本地资源. 一.Activity 的生命周期 Activity 的生命周期是被以下的函数控制的. 1 public class Activity

Android学习之路——Android四大组件之activity(一)

一.什么是Activity? Activity简单的说就是一个界面,我们在Android手机上看到的每一个界面就是一个activity. 二.Activity的创建 1.定义一个类继承activity,然后在清单文件manifest.xml文件的application节点下注册activity,这个activity就创建成功了. public class MyActivity extends Activity { } 2.清单文件注册activity <application android:a

Android四大组件之Activity(活动)及其布局的创建与加载布局

Android四大组件之Activity(活动)及其布局的创建与加载布局 什么是Activity ? 活动(Activity)是包含用户界面的组件,主要用于和用户进行交互的,一个应用程序中可以包含零个或多个活动. 手动创建Activity的过程详解 到现在为止,你还没有手动创建过活动呢,在第一个安卓工程中,HelloWorldActivity是ADT帮我们创建的,手动创建活动可以加深我们的理解,因此现在是时候应该自己动手了. 首先,你需要再新建一个 Android 项目,项目名可以叫做 Acti

Android四大组件之——Activity(一)定义、状态和后退栈

什么是Activity 关键字:应用组件.四大组件.用户界面,交互. An Activity is an application component that provides a screen with which users can interact in order to do something 每个Android应用打开,一般都有界面与用户进行交互,以完成输入,输出等一些功能.提供这个功能的就是Android四大组件之一,Activity. Activity提供一个窗口描绘了用户界面,

Android 四大组件之 Activity

1.综述 Activity是Android四大组件(Application Components)之一,简单来说Activity就是平常所见到的用户界面,一般情况下,一个Activity所占的窗口是满屏的,但也可以是一个小的位于其它Activity之上的浮动窗口.一个Android工程至少有一个Activity,Activity上面可布有多个view实例,如文本框.进度条.复选框.按钮等等.多个Activity之间通过Intent来实现跳转. [1]新建一个activity (1)要继承(ext

android四大组件之Activity - (1)从源码中理解并巧用onWindowFocusChanged(boolean hasFocus)

这里开始到后面,想趁着有时间,将Android四大组件和一些系统组件做一些总结和记录.由于网上已经有很多写的很好并且总结也全面的文章.小弟我也囊中羞涩不敢献丑,就记录一些自己觉得重要的有用的知识点,顺便大家一起学习讨论啥的也好 Activity作为四大组件之一,对于整个Android开发有多重要就无需赘言了.关于它的生命周期,这里借用下官网的图,便一目了然: 那么它的生命周期和我们所说的onWindowFocusChanged(boolean hasFocus)方法有何关系? Activity生

第六课-Android四大组件之Activity

Activity是Android四大组件之一,它是个控制类,主要控制界面的加载显示,用户交互处理,数据的获取,数据的传送等.在它的onCreate方法中的setContentView方法就是来加载一个用户的界面. Activity既然是组件,把就必须要在清单文件中注册. Android每个界面的加载都需要Activity来完成. Android系统并不知道我们的应用要加载什么界面,它只知道应用会吧一个界面加载到一个手机窗口(Window)上,然后Window有setContentView方法来加