Intent函数
1.Intent 是指在相互独立的组件(如两个 Activity)之间提供运行时绑定功能的对象。
2.Intent 表示一个应用“执行某项操作的意向”。
3.Intent intent = new Intent(this, NameActivity.class)。
startActivity(intent);
startActivity() 函数将启动 Intent 指定的 NameActivity 实例.
需要返回至原先页面
AndroidManifest.xml 中添加必需的 <activity> 元素
案例:
<activity
android:name=".LoginPage"
android:parentActivityName=".MainActivity">
<!-- The meta-data tag is required if you support API level 15 and lower -->
<meta-data
android:name="android.support.aaa"
android:value=".MainActivity" />
</activity>
传值以及接值
方法很多,现在只写两种
第一种:
发送方:
Intent intent = new Intent();
intent.putExtra("name", "诸葛亮");
intent.putExtra("age", 50);
intent.putExtra("IQ", 200.0f);
intent.setClass(MainActivity.this, SecondActivity.class);
MainActivity.this.startActivity(intent);
接受方:
Intent intent = getIntent();
String name = intent.getStringExtra("name");
int age = intent.getIntExtra("age", 0);
float IQ = intent.getFloatExtra("IQ", 0.0f);
textview2.setText("name:"+name+",age:"+age+",IQ:"+IQ);
第二种:
对象类要实现Parclelable接口
发送方:
Intent intent = new Intent();
Person person = new Person("孙悟空",500,55.6f);
intent.putExtra("person", person);
intent.setClass(MainActivity.this, SecondActivity.class);
startActivity(intent);
接受方:
Intent intent = getIntent();
Person person = intent.getParcelableExtra("person");
textview = (TextView) findViewById(R.id.textview);
textview.setText(person.toString());
对象类:
public class Person implements Parcelable {
private String name;
private int age;
private float weight;
....
}
fragment到Activity
由于fragment可以使用 getActivity() 访问Activity实例,所以这一步实现很简单。
intent=new Intent(getActivity(), UserLoginActivity.class);
startActivity(intent);
fragment到fragment
1.在相应fragment全局中声明fragment管理对象及事务对象。
// Fragment管理对象
private FragmentManager manager;
private FragmentTransaction ft;
2.在OnCreate方法中初始化fragment管理对象
@Override
public void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
manager = getFragmentManager();
}
3.从 FragmentManager 获得一个FragmentTransaction实例
MyJDEditFragment myJDEditFragment = new MyJDEditFragment();
ft = manager.beginTransaction();
//当前的fragment会被myJDEditFragment替换
ft.replace(R.id.realtabcontent, myJDEditFragment);
ft.addToBackStack(null);
ft.commit();
//简略写法
FragmentManager FM = getSupportFragmentManager();
FM.beginTransaction().replace(R.id.main_FrameLayout, fm1).commit();
那么如何在fragment切换的时候还可以传递参数呢?
我们可以使用setArguments()方法绑定一个bundle对象传递到另外一个fragment中。
myJDEditFragment.setArguments(bundle);
在另外一个fragment中(myJDEditFragment)使用getArguments()可以拿到bundle对象。
网友评论