青玄 发表于 2014-11-4 15:11:30

[原创]安卓四大组件之activity

本帖最后由 青玄 于 2014-11-4 21:12 编辑

activity之间的跳转与传值:
要想实现跳转与传值的话,我们首先要在清单配置文件中,写好连个activity,然后,在activity程序中进行编写跳转与传值的代码:

首先在MainActivity中用到的跳转方法是startActivity(Intent intent)方法,但是这个方法只能够将值传过去,而不能将值返回回来!而startActivityForResult(Intent intent, int requestCode)这个方法可以返回来数据!
1.startActivity(Intent intent)
   参数说明:Intent 这个参数有一个方法intent.putExtra(String name, Serializable serializable)其中serializable是一个序列化的一个对象,这个对象里面有你要传递的参数,而name就是这个序列化对象的名字,这个得话可以随便取!但是要注意的是:在跳转到的那个页面接收这个对象的时候,名字必须与它一致!
2.startActivity(Intent intent)
   参数说明:这个参数在传递参数的时候,是这样的它连续用intent.putExtra("name","小白马");这个方法,去将参数设置到intent对象中去
然后再次将intent以参数的形式给startActivity这个方法!
                     还有一种设置的方法就是:用Bundle这个类,这个类是用来存储传递的数据的其用法是:
                     Bundle bundle = new Bundle();
                     bundle.putString("name","小白马");
                        intent.putExtras(bundle);
***************************************************************************************************************************
到要跳转的activity的时候可以用本类的getIntent这个方法来接收一个Intent对象:然后用intent.getSerializableExtra("student");获得传递过来的对象;
在这个activity中,若想传递数据给第一个activity的时候要用到setResult(1,intent);


public void close(View v)
      {
                Intent intent = new Intent();
                intent.putExtra("result", "小白马这里");
                setResult(1,intent);
                finish();
      }

然后在第一个activity里面去覆写protected void onActivityResult(int requestCode, int resultCode, Intent data)这个方法!然后:
@Override
      protected void onActivityResult(int requestCode, int resultCode, Intent data)//这里是用来接收返回来的数据
      {
                // TODO Auto-generated method stub
                super.onActivityResult(requestCode, resultCode, data);
                String result = data.getStringExtra("result");
                Toast.makeText(this, result, Toast.LENGTH_LONG).show();
      }      值得注意的是如果用intent与bundle进行设置传递的数据的时候,那么在接收的时候,是这样的:
这里的话也可以用intent去获取数据:String name = intent.getStringExtra("name");
int age = intent.getintExtra("age", 0);
float salary = intent.getFloatExtra("salary", 0);
还可以用这个进行传值:
Bundle bundle = intent.getExtras();
String name = bundle.getString("name");
int age = bundle.getInt("age", 0);
float salary =budle.getFloat("salary", 0);
result.setText("姓名:" + name + "\年龄" + age +
               * "\n工资" + salary);*************************************************************************************************************************************************************************************意图-->Intent的使用******************************************

在android中,activity之间跳转的时候,总是要用到Intent这个类!其实就是意图类,恩~~在android中,意图分两种:
显示意图与隐式意图,显示意图就是跳转的activity类在Intent实例化的时候,是可以看到的!例如
Intent intent = new Intent(this.SecondActivity.class);
               startActivity(intent);
而隐式意图则是看不见的!其实需要在清单配置文件里面去配置:
<activity
            android:name="com.example.intent_test.SecondActivity"
            android:label="意图过滤"
            >
            <intent-filter>
            <action android:name="cn.cbd.aaa" />
               <category android:name="android.intent.category.XXX"/>
               <category android:name="android.intent.category.ZZZ"/>
               <category android:name="android.intent.category.DEFAULT"/>
               <data android:scheme="cbd" android:mimeType="image/*"/>
            </intent-filter>
      </activity>然后只需要在activity程序中这样就行了:

Intent intent = new Intent();
                //只有当一下两个参数匹配成功后才能执行跳转
                intent.setAction(Intent.ACTION_VIEW);   //这里是匹配清单文件中的action
                intent.setData(Uri.parse("http://www.baidu.com"));   //这里是设置匹配数据的Uri
                startActivity(intent);







页: [1]
查看完整版本: [原创]安卓四大组件之activity