Android之不同Activity之间的数据传递


先看代码实例:

注意激活其他Activity的不同方法与Activity之间的数据如何传递以及如何获取

  1. public class MainActivity extends Activity   
  2. {  
  3.     public void onCreate(Bundle savedInstanceState)   
  4.     {  
  5.         super.onCreate(savedInstanceState);  
  6.         setContentView(R.layout.main);  
  7.           
  8.         Button button = (Button)this.findViewById(R.id.button);  
  9.         button.setOnClickListener(new View.OnClickListener()   
  10.         {             
  11.             @Override  
  12.             public void onClick(View v)   
  13.             {  
  14.                 //打开Other Activity,为Intent设置要激活的组件   
  15.                 Intent intent = new Intent(MainActivity.this, OtherActivity.class);  
  16.                 //intent.putExtra("name", "凯风自南");   
  17.                 //intent.putExtra("age", 21);   
  18.                 Bundle bundle = new Bundle();  
  19.                 bundle.putString("name""凯风自南");  
  20.                 bundle.putInt("age"21);  
  21.                 intent.putExtras(bundle);  
  22.                 //设置要激活的组件,方法1   
  23.                 //intent.setClass(MainActivity.this, OtherActivity.class);   
  24.                 //设置要激活的组件,方法2   
  25.                 //intent.setComponent(new ComponentName(MainActivity.this, OtherActivity.class));   
  26.                 //startActivity(intent);   
  27.                   
  28.                 //等待他打开的Activity关闭的时候返回的结果   
  29.                 startActivityForResult(intent, 100);  
  30.             }  
  31.         });  
  32.     }  
  33.       
  34.      
  35.     /** 
  36.      * 请求码requestCode与结果码resultCode的作用: 
  37.      * 因为可能请求与结果有若干对,那么用码可以区别里面传递的是一对 
  38.      * 简单的说就是用来区别多个返回值的时候使用 
  39.      */  
  40.     protected void onActivityResult(int requestCode, int resultCode, Intent data)   
  41.     {  
  42.         //得到返回结果   
  43.         Toast.makeText(this, data.getStringExtra("result"), 1).show();        
  44.         super.onActivityResult(requestCode, resultCode, data);  
  45.     }      
  46. }  

 

  1. public class OtherActivity extends Activity   
  2. {  
  3.     @Override  
  4.     protected void onCreate(Bundle savedInstanceState)   
  5.     {  
  6.         super.onCreate(savedInstanceState);  
  7.         setContentView(R.layout.other);  
  8.         //得到激活它的意图   
  9.         Intent intent = this.getIntent();  
  10.         //得到数据   
  11.         String name = intent.getStringExtra("name");  
  12.         //得到数据的另一种写法   
  13.         int age = intent.getExtras().getInt("age");  
  14.           
  15.         TextView textView = (TextView)this.findViewById(R.id.result);  
  16.         textView.setText("名称:"+ name+"  年龄:"+ age);  
  17.           
  18.         //关闭Activity的Button操作   
  19.         Button button = (Button)this.findViewById(R.id.close);  
  20.         button.setOnClickListener(new View.OnClickListener()   
  21.         {                 
  22.             @Override  
  23.             public void onClick(View v)   
  24.             {  
  25.                 //关闭之前为Activity设置返回结果   
  26.                 Intent intent = new Intent();  
  27.                 intent.putExtra("result""返回凯风自南");  
  28.                 //设置返回数据   
  29.                 setResult(20, intent);  
  30.                 //关闭activity   
  31.                 finish();  
  32.             }  
  33.         });        
  34.     }  
  35. }  

注意添加新的Activity之后要在AndroidManifest文件中进行声明:

<activity android:name=".NewActivity" android:label="XXX"/>

(0)新建一个Activity,不传递参数

 

       //新建一个显式意图,第一个参数为当前Activity类对象第二个参数为你要打开的Activity

      startActivity(new Intent(MainActivity.this, NewActivity.class));


(1)新建一个Activity,传递参数

 Intent intent = new Intent(MainActivity.this, NewActivity.class)

 

Bundle bundle = new Bundle();//该类用作携带数据

bundle.putString("name", "凯风自南");

bundle.putInt("age", 21);

intent.putExtras(bundle);//附带上额外的数据

startActivity(intent);


接收的Activity使用下面方法得到参数:

Bundle bundle = this.getIntent().getExtras();

String name = bundle.getString("name");

int age = bundle.getInt("age");

  • 1
  • 2
  • 下一页

相关内容