Intent是Activity与Activity之间,Activity与Service之间传递参数的介质,使用Intent和Bundle在组件之间传递数据,而这两种通常实现的是Java基本对象类型和String的传递。
在实际项目中,页面之间传值,除了以上几种,经常还有传递Object对象、List类型、List<Object>类型和全局变量等等的需求。
1、新建一个java类,右击src目录,选择new-->class,新的activity需要继承Activity类
2、需要复写onCreate()
例子:
package com.example.testsend; import android.app.Activity; import android.os.Bundle; public class MainActivity2 extends Activity{ @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.newtest); } }
3、配置到AndroidManifext.xml,在application下创建一个新的activity,如果跟MainActivity同一目录,可以只写.name,否则加包名,不过建议写全。
<activity android:name="com.example.testsend.MainActivity2"> </activity>
如果希望新的activity作为首页展示,把intent-filter那一块搬过来就可以了。
二、Activity之间的通信
1、打开一个新的Activity,不传递参数
<Button android:id="@+id/btnOpen" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="打开新页面" android:onClick="OpenNew" />
点击按钮触发的方法:
MainActivity.java设置方法
public void OpenNew(View v){ //新建一个显式意图,第一个参数为当前Activity类对象,第二个参数为你要打开的Activity类 Intent intent =new Intent(MainActivity.this,MainActivity2.class); startActivity(intent); }
2、打开新的Activity并传递参数
MainActivity.java传递参数
public void OpenNew(View v){ //新建一个显式意图,第一个参数为当前Activity类对象,第二个参数为你要打开的Activity类 Intent intent =new Intent(MainActivity.this,MainActivity2.class); //用Bundle携带数据 Bundle bundle=new Bundle(); //传递name参数为tinyphp bundle.putString("name", "tinyphp"); intent.putExtras(bundle); startActivity(intent); }
MainActivity2.java接收参数
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.newtest); //新页面接收数据 Bundle bundle = this.getIntent().getExtras(); //接收name值 String name = bundle.getString("name"); Log.i("获取到的name值为",name); }
接收成功: