1 Activity简单跳转,
1.1 Activity的页面样式及跳转方式:
activity_a.xml
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/hello_world" />
<Button
android:id="@+id/btn_submit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:text="@string/btn_submit" />
ActivityA.java
public class ActivityA extends Activity {
private Button btn_submit; //定义button局部变量
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_a);
btn_submit = (Button) findViewById(R.id.btn_submit);
btn_submit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// Intent intent = new Intent(); //创建一个Intent对象
// intent.setClass(ActivityA.this, ActivityB.class); //描述起点和目标
/*上面两种方式可以简写成如下代码*/
Intent intent = new Intent(ActivityA.this, ActivityB.class); //简写形式
intent.putExtra("txt", "苏州科技大学"); //设置跳转值的传递
startActivities(intent); //开始跳转
}
});
}
protected void startActivities(Intent intent) {
// TODO Auto-generated method stub
super.startActivity(intent);
}
activity_b.xml
<TextView
android:id="@+id/tvOut"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/tvOut"/>
ActivityB.java
public class ActivityB extends Activity {
private TextView tvOut;
@Override
protected void onCreate(Bundle savedInstanceState) { //重写onCreate()方法
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_b); //绑定布局
tvOut = (TextView) findViewById(R.id.tvOut);
tvOut.setText(getIntent().getStringExtra("txt"));
}
}
Tip:
1,AndroidManifest.xml中需要添加<activity android:name="ActivityB"></activity>代码
2,在ActivityA中默认没有实现
在startActivities()方法调用时,需要先实现该方法。
1.2 实现关闭功能
activity_b.xml添加关闭按钮
<Button
android:id="@+id/btnClose"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignRight="@+id/tvOut"
android:layout_below="@+id/tvOut"
android:layout_marginTop="16dp"
android:text="@string/btnClose" />
ActivityB.java注意代码:
public class ActivityB extends Activity {
private Button btnClose;
@Override
protected void onCreate(Bundle savedInstanceState) { //重写onCreate()方法
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_b); //绑定布局
btnClose = (Button) findViewById(R.id.btnClose);
btnClose.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
});
}
}
Tip:
1. Activity.finish():finish是Activity的类,仅仅针对Activity,当调用finish()时,只是将活动推向后台,并没有立即释放内存,活动的资源并没有被清理;
Activity.onDestory():系统销毁了这个Activity的实例在内存中占据的空间。在Activity的生命周期中,onDestory()方法是他生命的最后一步,资源空间等就被回收了。当重新进入此Activity的时候,必须重新创建,执行onCreate()方法。
System.exit(0):调用System.exit(0)时,杀死了整个进程,这时候活动所占的资源也会被释放。
Activity.onDestory():系统销毁了这个Activity的实例在内存中占据的空间。在Activity的生命周期中,onDestory()方法是他生命的最后一步,资源空间等就被回收了。当重新进入此Activity的时候,必须重新创建,执行onCreate()方法。
System.exit(0):调用System.exit(0)时,杀死了整个进程,这时候活动所占的资源也会被释放。
2 使用Bundle传递数据
ActivityA.java
public class ActivityA extends Activity {
private Button btn_submit; //定义button局部变量
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_a);
btn_submit = (Button) findViewById(R.id.btn_submit);
btn_submit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// Intent intent = new Intent(); //创建一个Intent对象
// intent.setClass(ActivityA.this, ActivityB.class); //描述起点和目标
/*上面两种方式可以简写成如下代码*/
Intent intent = new Intent(ActivityA.this, ActivityB.class); //简写形式
// intent.putExtra("txt", "苏州科技大学"); //设置跳转值的传递
//方式二:使用bundle方式传递数据
Bundle data = new Bundle();
data.putString("txt", "苏州科技大学");
intent.putExtras(data);
startActivities(intent); //开始跳转
}
});
}
ActivityB.java
public class ActivityB extends Activity {
private TextView tvOut;
private Button btnClose;
@Override
protected void onCreate(Bundle savedInstanceState) { //重写onCreate()方法
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_b); //绑定布局
tvOut = (TextView) findViewById(R.id.tvOut);
// tvOut.setText(getIntent().getStringExtra("txt"));
//方式二:使用bundle方式接收数据
//得到数据
Bundle data = getIntent().getExtras();
String txt = data.getString("txt");
tvOut.setText(txt);
btnClose = (Button) findViewById(R.id.btnClose);
btnClose.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
});
}
}
注:
1.使用bundle方式可以添加相对比较复杂的数据
3 取得传回的数据
ActivityB.java
public class ActivityB extends Activity {
private TextView tvOut;
private Button btnClose;
@Override
protected void onCreate(Bundle savedInstanceState) { //重写onCreate()方法
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_b); //绑定布局
tvOut = (TextView) findViewById(R.id.tvOut);
// tvOut.setText(getIntent().getStringExtra("txt"));
//方式二:使用bundle方式接收数据
//得到数据
Bundle data = getIntent().getExtras();
String txt = data.getString("txt");
tvOut.setText(txt);
btnClose = (Button) findViewById(R.id.btnClose);
btnClose.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent();
intent.putExtra("result", "计算机科学与技术");
setResult(0, intent); //指定返回值
finish();
}
});
}
}
activity_a.xml
<TextView
android:id="@+id/tvOut"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/hello_world" />
ActivityA.java
public class ActivityA extends Activity {
private Button btn_submit; //定义button局部变量
private TextView tvOut;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_a);
tvOut = (TextView) findViewById(R.id.tvOut);
btn_submit = (Button) findViewById(R.id.btn_submit);
btn_submit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// Intent intent = new Intent(); //创建一个Intent对象
// intent.setClass(ActivityA.this, ActivityB.class); //描述起点和目标
/*上面两种方式可以简写成如下代码*/
Intent intent = new Intent(ActivityA.this, ActivityB.class); //简写形式
// intent.putExtra("txt", "苏州科技大学"); //设置跳转值的传递
//方式二:使用bundle方式传递数据
Bundle data = new Bundle();
data.putString("txt", "苏州科技大学");
intent.putExtras(data);
// startActivities(intent); //开始跳转
startActivityForResult(intent, 0);
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
String result = data.getStringExtra("result");
tvOut.setText(result);
super.onActivityResult(requestCode, resultCode, data);
}
注:
1,如果取得传回的数据,不能使用startActivities(intent),而是使用startActivityForResult(intent, 0);