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 = 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 }
示例结果:
如果有什么错误,或者我理解错误或不当的,恳请大家纠正,谢谢!嘻嘻嘻~