首页 > 代码库 > 页面跳转

页面跳转

Intent实现Activity之间的跳转

(1)无返回值:

首先得创建两个继承Activtity的类,

注意!在安卓中,每创建一个Activtity类都要在AndroidManifest.xml文件中注册

例如我这里注册了三个Activity类,(分别是MainActivity,MianActivity2,MianActivity3)

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
 3     package="com.example.z_intent"
 4     android:versionCode="1"
 5     android:versionName="1.0" >
 6 
 7     <uses-sdk
 8         android:minSdkVersion="8"
 9         android:targetSdkVersion="21" />
10 
11     <application
12         android:allowBackup="true"
13         android:icon="@drawable/ic_launcher"
14         android:label="@string/app_name"
15         android:theme="@style/AppTheme" >
16         <activity
17             android:name=".MainActivity"
18             android:label="@string/app_name" >
19             <intent-filter>
20                 <action android:name="android.intent.action.MAIN" />
21 
22                 <category android:name="android.intent.category.LAUNCHER" />
23             </intent-filter>
24         </activity>
25         
26         <activity
27             android:name=".MainActivity2"
28             android:label="@string/app_name" >
29         </activity>
30         
31         <activity
32             android:name=".MainActivity3"
33             android:label="@string/app_name" >
34         </activity>
35     </application>
36 
37 </manifest>

 

需要程序启动时候第一个显示的Activity类要写入<intent-filter></intent-filter>相关信息.

顺便解释一下,文件中的android:versionCode="1"和android:versionName="1.0代表版本号

android:minSdkVersion="8"表示应用支持最低的API版本android:targetSdkVersion="21"建议的API版本

四大组件的注册都需要写在<application></appliaction>里面

 

回归主题:

然后需要创建两个布局文件,分别对应两个Activity的布局

布局样式是这样的:(其中第一个布局下面是有个TextView的)

通过按无返回跳转去到第二个布局,然后按返回回到第一个布局

技术分享    技术分享

通过Intent实现两个Activity之间的转换

示例代码:

 1 public class MainActivity extends Activity {
 2 
 3     private Button bt1;
 4     private TextView text;
 5     @Override
 6     protected void onCreate(Bundle savedInstanceState) {
 7         super.onCreate(savedInstanceState);
 8         setContentView(R.layout.activity_main);
 9         bt1 = (Button)findViewById(R.id.bt1);
10         text = (TextView)findViewById(R.id.text);
11         bt1.setOnClickListener(new OnClickListener() {
12             @Override
13             public void onClick(View v) {
14                 Intent intent = new Intent(MainActivity.this,MainActivity2.class);
15                 startActivity(intent); //启动Activiry
16             }
17         });
18     } 
19 }
 1 public class MainActivity2 extends Activity {
 2     
 3     private Button bt;
 4      @Override
 5         protected void onCreate(Bundle savedInstanceState) {
 6             super.onCreate(savedInstanceState);
 7             setContentView(R.layout.activity_mian2);
 8             bt = (Button)findViewById(R.id.bt3);
 9             bt.setOnClickListener(new OnClickListener() {
10                 public void onClick(View v) {
11                     finish();    //销毁这个Activity
12                 }
13             });
14         }
15 }

(1)有返回值:

Intent不仅可以转换Activity,还可以保存数据

首先我们同样先创建一个新的类继承Activty,记得在AndroidManifest.xml文件中注册

然后第三个Activity的布局是这样的:

技术分享

 

通过按有返回跳转去到第三个布局,通过往EditText里面写入东西,按返回按钮回到第一个Activity,并且在TextView中显示出来

 

示例代码:

 1 public class MainActivity extends Activity {
 2 
 3     private Button bt1,bt2;
 4     private TextView text;
 5     @Override
 6     protected void onCreate(Bundle savedInstanceState) {
 7         super.onCreate(savedInstanceState);
 8         setContentView(R.layout.activity_main);
 9         bt1 = (Button)findViewById(R.id.bt1);
10         bt2 = (Button)findViewById(R.id.bt2);
11         text = (TextView)findViewById(R.id.text);
12         bt1.setOnClickListener(new OnClickListener() {
13             @Override
14             public void onClick(View v) {
15                 Intent intent = new Intent(MainActivity.this,MainActivity2.class);
16                 startActivity(intent); //启动Activiry
17             }
18         });
19         
20         bt2.setOnClickListener(new OnClickListener() {
21             @Override
22             public void onClick(View v) {
23                 Intent intent = new Intent(MainActivity.this,MainActivity3.class);
24                 /**
25                  * startActivityForResult(Intent intent, int requestCode)
26                  * requestCode是自己定义的请求编号,用来区分不同的界面向同一个界面请求
27                  */
28                 startActivityForResult(intent,1);
29             }
30         });
31     }   
32     public void onActivityResult(int requestCode, int resultCode, Intent data){
33         super.onActivityResult(requestCode, resultCode, data);
34         if(requestCode == 1 && resultCode == 2){
35             //这里的code是data保存数据里面的信息编号。
36               String s = data.getStringExtra("code");
37               text.setText(s);
38         }
39     }
40 }
 1 public class MainActivity3 extends Activity {
 2 
 3     private Button bt;
 4     private EditText et;
 5      @Override
 6         protected void onCreate(Bundle savedInstanceState) {
 7             super.onCreate(savedInstanceState);
 8             setContentView(R.layout.activity_mian3);
 9             bt = (Button)findViewById(R.id.bt4);
10             et = (EditText)findViewById(R.id.et);
11             bt.setOnClickListener(new OnClickListener() {
12                 public void onClick(View v) {
13                     Intent data = http://www.mamicode.com/new Intent();
14                     data.putExtra("code",et.getText().toString());
15                     /**
16                      * setResult(int resultCode, Intent data)
17                      * resultCode 返回编号,用来区分不同界面向同一个界面返回结果
18                      */
19                     setResult(2,data);
20                     finish();
21                 }
22             });
23         }
24 }

示例结果:

   技术分享   技术分享

 

如果有什么错误,或者我理解错误或不当的,恳请大家纠正,谢谢!嘻嘻嘻~

页面跳转