Android入门——页面跳转

    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,页面跳转)