Android之不同Activity之间的数据传递
Android之不同Activity之间的数据传递
先看代码实例:
注意激活其他Activity的不同方法与Activity之间的数据如何传递以及如何获取
- public class MainActivity extends Activity
- {
- public void onCreate(Bundle savedInstanceState)
- {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- Button button = (Button)this.findViewById(R.id.button);
- button.setOnClickListener(new View.OnClickListener()
- {
- @Override
- public void onClick(View v)
- {
- //打开Other Activity,为Intent设置要激活的组件
- Intent intent = new Intent(MainActivity.this, OtherActivity.class);
- //intent.putExtra("name", "凯风自南");
- //intent.putExtra("age", 21);
- Bundle bundle = new Bundle();
- bundle.putString("name", "凯风自南");
- bundle.putInt("age", 21);
- intent.putExtras(bundle);
- //设置要激活的组件,方法1
- //intent.setClass(MainActivity.this, OtherActivity.class);
- //设置要激活的组件,方法2
- //intent.setComponent(new ComponentName(MainActivity.this, OtherActivity.class));
- //startActivity(intent);
- //等待他打开的Activity关闭的时候返回的结果
- startActivityForResult(intent, 100);
- }
- });
- }
- /**
- * 请求码requestCode与结果码resultCode的作用:
- * 因为可能请求与结果有若干对,那么用码可以区别里面传递的是一对
- * 简单的说就是用来区别多个返回值的时候使用
- */
- protected void onActivityResult(int requestCode, int resultCode, Intent data)
- {
- //得到返回结果
- Toast.makeText(this, data.getStringExtra("result"), 1).show();
- super.onActivityResult(requestCode, resultCode, data);
- }
- }
- public class OtherActivity extends Activity
- {
- @Override
- protected void onCreate(Bundle savedInstanceState)
- {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.other);
- //得到激活它的意图
- Intent intent = this.getIntent();
- //得到数据
- String name = intent.getStringExtra("name");
- //得到数据的另一种写法
- int age = intent.getExtras().getInt("age");
- TextView textView = (TextView)this.findViewById(R.id.result);
- textView.setText("名称:"+ name+" 年龄:"+ age);
- //关闭Activity的Button操作
- Button button = (Button)this.findViewById(R.id.close);
- button.setOnClickListener(new View.OnClickListener()
- {
- @Override
- public void onClick(View v)
- {
- //关闭之前为Activity设置返回结果
- Intent intent = new Intent();
- intent.putExtra("result", "返回凯风自南");
- //设置返回数据
- setResult(20, intent);
- //关闭activity
- finish();
- }
- });
- }
- }
注意添加新的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");
|
评论暂时关闭