一个简单的Android Intent使用实例,包括显式/隐式2种调用
来源:互联网 发布:刺客信条大革命pc优化 编辑:程序博客网 时间:2024/06/13 06:31
最近又开始接触了一下Android,准备将每次写的小Demo都在这里备份一下,以防以后忘记了,Demo相对来说都比较简单,内容也比较片面。今天主要就是练习了一下intent的使用,主要涉及到的知识点有:intent传值,隐式调用。
1.传值:
发送端:intent.putExtra("name", username.getText().toString());接收端:
intent = getIntent();
intent.getStringExtra("name")这时候就获得了从前一个activity传递过来的参数name,传递参数不仅仅可以传递String类型,其他类型也可。2.当前activity被finis()掉之后,将参数传递到前一个页面:前一个activity中不使用startActivity(intent),而是使用startActivityForResult(intent, 123);后面的参数算是当前activity自定义的一个编码值,int类型。后一个activity中Intent intent_back = new Intent();intent_back.putExtra("age", activiey2_age.getText().toString());setResult(200,intent_back);finish();,然后在前一个activity中重写onActivityResult方法,具体代码如下,其中三个参数依次代表:请求activity的编码值,返回数据activity的编码值,返回结果intent:protected void onActivityResult(int requestCode, int resultCode, Intent data) { Log.i("debug", "onActivityResult" + "requestCode" + requestCode + "\n resultCode=" + resultCode); if (requestCode == 123) { switch (resultCode) { case 200: userage.setText(data.getStringExtra("age")); break; case -1: final Bitmap photo = data.getParcelableExtra("data"); imageView.setImageBitmap(photo); } }}接下来再说说隐式调用,这种方式还是挺有用的也挺常用的,大体上可以理解模糊查询的意思了,大概就是说:不知道我要打开那个activity,但是我知道我要打开的activity要符合怎么样一个条件。
代码很简单:Intent intent2 = new Intent();intent2.setAction("com.text.jh");startActivity(intent2);其中最关键的就是这个setAction()中的参数对应什么?这个值应该在哪里设置?首先说,设置的地方就在AndroidManifest.xml文件中,需要给对应的activity设置<intent-filter> <action android:name="com.text.jh"/> <category android:name="android.intent.category.DEFAULT"/></intent-filter>,前面所说的setAction()中的参数就对应到了action的name属性,注:这地方的使用方式是最简单的一种,也没有什么其他的设置。
看完整的代码案例;
项目目录结构:
AndroidManifest.xml文件:<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.root.intentproject" > <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name=".MainActivity" 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=".main2Activity" android:label="@string/title_activity_main2" > <intent-filter> <action android:name="android.intent.action.SEND"/> <category android:name="android.intent.category.DEFAULT"/> <data android:mimeType="text/plain"/> </intent-filter> </activity> <activity android:name=".Main3Activity" android:label="@string/title_activity_main3" > <intent-filter> <action android:name="com.text.jh"/> <category android:name="android.intent.category.DEFAULT"/> </intent-filter> </activity> </application></manifest>MainActivity.java文件:package com.example.root.intentproject;import android.content.Intent;import android.graphics.Bitmap;import android.nfc.Tag;import android.provider.MediaStore;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.util.Log;import android.view.Menu;import android.view.MenuItem;import android.view.View;import android.widget.Button;import android.widget.EditText;import android.widget.ImageView;import android.widget.TextView;import java.security.PrivateKey;public class MainActivity extends AppCompatActivity implements View.OnClickListener { private Button button1; private Button button2; private Button button3; private Button button4; private EditText username; private TextView userage; private ImageView imageView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); button1 = (Button) findViewById(R.id.button1); button2 = (Button) findViewById(R.id.button2); button3 = (Button) findViewById(R.id.button3); button4 = (Button) findViewById(R.id.button4); username = (EditText) findViewById(R.id.username); userage = (TextView) findViewById(R.id.userage); imageView = (ImageView) findViewById(R.id.imageView); button1.setOnClickListener(this); button2.setOnClickListener(this); button3.setOnClickListener(this); button4.setOnClickListener(this); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { Log.i("debug", "onActivityResult" + "requestCode" + requestCode + "\n resultCode=" + resultCode); if (requestCode == 123) { switch (resultCode) { case 200: userage.setText(data.getStringExtra("age")); break; case -1: final Bitmap photo = data.getParcelableExtra("data"); imageView.setImageBitmap(photo); } } } @Override public void onClick(View view) { switch (view.getId()) { case R.id.button1: Intent intent = new Intent(); intent.setClass(MainActivity.this, main2Activity.class); intent.putExtra("name", username.getText().toString()); startActivityForResult(intent, 123); break; case R.id.button2: Intent intent1 = new Intent(); intent1.setAction(MediaStore.ACTION_IMAGE_CAPTURE); startActivityForResult(intent1, 123); break; case R.id.button3: Intent sendIntent = new Intent(); sendIntent.setAction(Intent.ACTION_SEND); sendIntent.putExtra(Intent.EXTRA_TEXT, "Android分享"); sendIntent.setType("text/plain"); startActivity(Intent.createChooser(sendIntent, "分享界面Title")); break; case R.id.button4: Intent intent2 = new Intent(); intent2.setAction("com.text.jh"); startActivity(intent2); break; } }}main2Activity.java文件:package com.example.root.intentproject;import android.content.Intent;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.Menu;import android.view.MenuItem;import android.view.View;import android.view.WindowManager;import android.widget.Button;import android.widget.EditText;import android.widget.TextView;public class main2Activity extends AppCompatActivity implements View.OnClickListener { private TextView textView; private EditText activiey2_age; private Button activiey2_back; private Intent intent; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main2); intent = getIntent(); textView = (TextView) findViewById(R.id.activiey2_data); activiey2_age = (EditText) findViewById(R.id.activiey2_age); activiey2_back = (Button) findViewById(R.id.activiey2_back); textView.setText(intent.getStringExtra("name")); activiey2_back.setOnClickListener(this); } @Override public void onClick(View view) { switch (view.getId()){ case R.id.activiey2_back: Intent intent_back = new Intent(); intent_back.putExtra("age", activiey2_age.getText().toString()); setResult(200,intent_back); finish(); break; } }}Main3Activity.java文件:package com.example.root.intentproject;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.Menu;import android.view.MenuItem;import android.widget.TextView;public class Main3Activity extends AppCompatActivity { private TextView textView3; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main3); textView3 = (TextView) findViewById(R.id.textView3); textView3.setText("在AndroidManifest.xml文件中本Activity的category配置了android.intent.category.DEFAULT,同时给action配置了com.ywz.ywz,这个名字也是后面隐式调用时action的值"); }}
activity_main.xml文件:<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_centerHorizontal="true" android:orientation="vertical" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".MainActivity"> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true" android:orientation="vertical"> <EditText android:id="@+id/username" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="请输入姓名" /> <TextView android:id="@+id/userage" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="请选择年龄" /> <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="activity跳转,传递姓名,填写年龄" /> <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/button2" android:text="隐式调用Intent,调用照相机功能"/> <ImageView android:layout_width="150dp" android:layout_height="wrap_content" android:id="@+id/imageView"/> <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/button3" android:text="隐式调用Intent,调用分享功能,这个隐式调用类似于模糊查询,只要条件符合的activity都可以被打开,所以会出现一个选择框,提供用户选择"/> <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/button4" android:text="隐式调用Intent"/> </LinearLayout></RelativeLayout>activity_main.xml2文件:<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.example.root.intentproject.main2Activity"> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true" android:orientation="vertical" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="this is 第二个 Activity,下面是传递过来的姓名" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/activiey2_data" /> <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/activiey2_age" android:hint="输入年龄"/> <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/activiey2_back" android:text="返回"/> </LinearLayout></RelativeLayout>activity_main.xml3文件:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.example.root.intentproject.Main3Activity"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/textView3" android:text="我也算一个分享页面吧" /></RelativeLayout>在这里就附上2个页面的运行效果图吧,大体操作流程就是:填写姓名,点击第一个按钮,在第二个页面会显示姓名,然后再第二个页面填写年龄,点击返回后,第一个页面会显示年龄,第二个按钮调用照相机,并将照片返回,第三个按钮点击之后是分享功能,可以进行分享,第四个按钮通过隐式调用跳至新的activity。
0 0
- 一个简单的Android Intent使用实例,包括显式/隐式2种调用
- 一个简单的Android Service实例,包括:bindService、IntentService
- Android Intent调用实例
- Android 实例:使用Android 里的intent
- Android Intent调用 Uri的使用几种格式
- Android Intent调用 Uri的使用几种格式
- Android Intent调用 Uri的使用几种格式
- Android 系统应用调用,intent的使用
- android系统调用 Intent的使用大全
- Android中Intent的简单使用
- Android中一个Activity调用另一个Activity — Intent对象的使用
- Android学习笔记(九)—— 调用另外一个Activity — Intent对象的使用
- 一个简单的内部调用BAPI实例
- Intent的简单使用
- 一个简单的Intent的android程序例子
- 【android中级】Android 系统应用调用,intent的使用总结
- Android 隐式Intent相比于显式Intent的优点
- Android Intent Filter简单使用
- 百度地图4.0多个经纬度展示在地图上
- 安卓APP流量测试小结
- go语言特性
- tester
- 仿简书APP富文本编辑器实现
- 一个简单的Android Intent使用实例,包括显式/隐式2种调用
- Android CalendarView非常用属性全解析
- python定时执行脚本实例
- 21. Merge Two Sorted Lists
- 关于Java的10个谎言
- JS控制浏览器刷新或退出显示提示语句
- SAP ABAP:获取汇率的完整实现之一
- 还在为手机运行内存RAM剩余多少烦恼吗?
- Firefox发布了新的实验特性