Android中页面跳转分两种情况,一是跳转不带值,还有一个是跳转带值。
先说简单情况,不带值跳转。
假设创建了应用,该应用包含两个类,FirstActivity和SecondActivity。要实现从FirstActivity中启动SecondActivity只需下面两行代码:
Intent intent = new Intent(FirstActivity.this, SecondActivity.class);
FirstActivity.this. startActivity(intent);
第一行代码创建一个Intent对象,将当前FirstActivity实例的引用和SecondActivity的类实例传递给Intent(Context packageContext,Class<?> cls),构造函数,初始化该对象。
第二行代码将这个Intent对象传递给startActivity(Intent)函数,该函数负责加载SecondActivity.class描述的Activity。
当然要页面跳转,SecondActivity.class中必须有onCreate函数,其中 setContentView(R.layout.activity_second); 必不可少,它的作用是将创建的activity_second.xml弹出。
这里有个问题需要注意,Activity必须在应用的AndroidManifest.xml文件中声明,否则无法启动。声明语言如下:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="…"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="17" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="….FirstActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name = "….SecondActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</activity>
</application>
</manifest>
SecondActivity与FirstActivity地位一样。从以上代码中可以看出,FirstActivity与SecondActivity分别通过<intent-filter>标签,与一个Intent过滤器相关联。其中省略号为包名。
下面介绍跳转时传值的情况。
首先得在FirstActivity.class中得到要传递的值,例如我得到如下的值:
EditText account = (EditText) this.findViewById(R.id.accountText);
我们之前创建了Intent对象
intent.putExtra("accountText",account.getText().toString());
这里第一个值是传值是所使用的名称,第二个是要传值的变量名。
我们还可以使用Bundle封装数据
Bundle bundle = new Bundle();
bundle.putString("accountText",account.getText().toString());
intent.putExtras(bundle);
注意以上传值的语句必须在startActivity(intent);之前。
以下是SecondActivity.class的代码
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;
public class SecondActivity extends Activity{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//setContentView(new HandWritingImageView(this));
setContentView(R.layout.activity_second);
this.showResult();
}
private void showResult(){
TextView userNameView = (TextView) this.findViewById(R.id.userNameView);
//获取数据
Intent it = this.getIntent();
Bundle bundle = it.getExtras();
String s = bundle.getString("accountText");
userNameView.setText(s);
}
}
我用Bundle传值的。userNameView是传值的目标。
本文详细介绍了Android中页面跳转的两种方式:无值跳转和带值跳转。包括如何使用Intent对象进行跳转,如何在AndroidManifest.xml中声明Activity,以及如何使用Intent传递数据。
1335

被折叠的 条评论
为什么被折叠?



