startActivityForResult的用法

来源:互联网 发布:mac os x10.5下载 编辑:程序博客网 时间:2024/05/29 03:01
  • 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     @Override22     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     @Override38     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);//执行顺序为144             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 //在另一个Activity,调用setResult方法时,在本页面回调onActivityResult。执行顺序为364     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); //执行顺序为2。 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                 @Override102                 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                 @Override111                 public long getChildId(int groupPosition, int childPosition) {112                       return childPosition;113                 }114                 115                 @Override116                 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     @Override11     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运行效果图

 

                      

 

 

 

                        

0 0
原创粉丝点击