Intent是 Android中重要的桥梁之一,它分为显式意图和隐式意图。接下来分别针对这两种意图进行讲解。
- 显式意图:通过指定一组数据或动作,激活应用内部的 activity;(相比隐式意图,此做法更安全)
Intent intent = new Intent(); intent.setClass(MainActivity.this,Main2Activity.class); //第一个参数指的就是要跳转的那个Activity;第二个指的是跳到的那个Activity startActivity(intent); //如果没有回调的时候直接这样就OK 或者 Intent intent = new Intent(); intent.setClassName("com.sd.study.test_01","com.sd.study.test_02"); //第一个参数指的就是要跳转的那个Activity的包名;第二个指的是跳到的那个Activity的包名 startActivity(intent); 或者 Intent intent = new Intent(this,Main2Activity.class);//第一个参数指的就是要跳转的那个Activity;第二个指的是跳到的那个Activity startActivity(intent);
- 隐式意图:通过指定具体的包名和类名,打开另一个程序的 Activity。
//实现跳转的功能 Intent intent = new Intent(); //设置跳转的动作 intent.setAction(" 清单文件中目标activity的name "); //设置 category intent.addCategory(" 清单文件中目标activity的category "); //开启 Activity (如果需要加权限记得加上) startActivity(intent); //实现拨打电话的功能 Intent intent = new Intent(); //设置拨打的动作 intent.setAction(" 清单文件中目标activity的name"); //设置拨打的数据 intent.setData(Uri.parse("tel:"+119)); //开启 Activity (如果需要加权限记得加上) startActivity(intent);
//清单文件 <application android:name=".MyApp" android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name=".Main2Activity"> // " 清单文件中目标activity的name " // " 清单文件中目标activity的category " </activity> </application>
- Android数据传递与回传
//第一个Activity public class MainActivity extends Activity { private Button btn ; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); btn = (Button)findViewById(R.id.button); //设置单击事件 btn.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(); intent.setClass(mainActivity.this,main2Activity.class); //第一个参数指的就是要跳转的那个Activity;第二个指的是跳到的那个Activity intent.putExtra("str1", "hello world"); intent.putExtra("str2", "你好,世界"); //如果没有回调也不用重写这个方法 startActivityForResult(intent, 1); } }); } } //第二个Activity public class Main2Activity extends Activity { protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); btn = (Button)findViewById(R.id.button); Intent intent = this.getIntent(); Bundle bundle = intent.getExtras(); //根据"键值对"取值 String str1 = bundle.getString("str1"); String str2 = bundle.getString("str2"); //按钮的点击事件 btn.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(); intent.putExtra("str3", "Back Data"); setResult(0, intent); //设置返回值 finish(); //调用这个方法,此Activity关闭,并把它从栈中移除。然后进入到前一个Activity } }); } }
-
- 数据传递
-
-
- putExtra(); //可以传递8种基本数据类型;
-
-
-
- Bundle(); //可以传递8种基本数据类型;
-
-
- 回传数据
-
-
- a. 调用者Activity开启新的界面选用 startActivityForResult();
-
startActivityForResult(intent, 1); //如果没有回调则不用重写这个方法
-
-
- b. 在新开启的Activity中设置返回值
-
Intent intent = new Intent(); intent.putExtras(); setResult();//设置返回值
-
-
- c. 操作关闭 finish();
- d. 在调用者Activity 中调用onActivityResult(); 方法
-
时间: 2025-01-08 02:45:19