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

     

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

      联系方式:JohnTsai.Work@gmail.com

      [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+"
CITY:   "+city+"
PHONE"+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+"
"+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运行效果图

                      

                        

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

原文地址:https://www.cnblogs.com/JohnTsai/p/4058284.html