Intent的简单使用
主要实现Intent之间值得转递,如从AActivity到BActivity之间传一个数值,一个实体类,一个集合类
下面代码只要是实现对startActivityForResult的使用,用ABC 3个类来实现的,从A到B,再B到C。
现在的需求就是A到B到C,当C完成某个操作时,结束当前界面并转递数据给A。如需求中的添加购物地址,添加卡号。
demo:http://download.csdn.net/download/qq_29774291/9936021
如下是3个类的代码
package com.item.jiejie.intent; import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import com.item.jiejie.intent.bean.BankCardUtil;
import com.item.jiejie.intent.bean.Bean; public class MainActivity extends AppCompatActivity { private Button btn_to_one;
private EditText edt_name;
private Button btn_name;
private String name;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn_to_one = (Button)findViewById(R.id.btn_to_one);
edt_name = (EditText)findViewById(R.id.edt_name);
btn_name = (Button)findViewById(R.id.btn_name);
btn_to_one.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(MainActivity.this,OneActivity.class);
/**第一种方式将数据封装到intent对象中*/
// intent.putExtra("data","随便写的");
/**第二种方式将数据封装至bundle对象中*/
Bundle bundle = new Bundle();
bundle.putString("data","随便写的");
intent.putExtras(bundle);
startActivityForResult(intent,0x01);
}
}); btn_name.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
name = BankCardUtil.getBankName(edt_name.getText().toString().trim().substring(0,6));
Log.d("jiejie",edt_name.getText().toString().trim().substring(0,6) + " " + name);
}
});
} @Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
switch (requestCode){
case 0x01:
if(resultCode == 0x03&& data!=null){
Bean bean = (Bean)data.getSerializableExtra("data");
Log.d("jiejie","--------" + bean.getName());
}
// if(resultCode == 0x04&& data!=null){
// Bean bean = (Bean)data.getSerializableExtra("data");
// Log.d("jiejie","----dddd----" + bean.getName());
// }
break;
}
}
}
package com.item.jiejie.intent; import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.TextView; import com.item.jiejie.intent.bean.Bean; import java.io.Serializable;
import java.util.ArrayList;
import java.util.List; public class OneActivity extends AppCompatActivity implements View.OnClickListener {
private Button btn_finish;
private TextView tv_message;
private Button btn_to_two; private List<Bean> beanList = new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_one);
btn_finish = (Button)findViewById(R.id.btn_finish);
btn_to_two = (Button)findViewById(R.id.btn_to_two);
tv_message = (TextView)findViewById(R.id.tv_message);
btn_finish.setOnClickListener(this);
btn_to_two.setOnClickListener(this); Intent intent = getIntent();
/**第一种方式*/
// String data = intent.getStringExtra("data");
// tv_message.setText(data);
/**第二种方式*/
Bundle bundle = intent.getExtras();
String data = bundle.getString("data");
Log.d("jiejie","从上个页面接受的数据" + data);
tv_message.setText(data);
beanList.add(new Bean(1,"one"));
beanList.add(new Bean(2,"two"));
beanList.add(new Bean(3,"three"));
} @Override
public void onClick(View view) {
switch (view.getId()){
case R.id.btn_finish:
finish();
break;
case R.id.btn_to_two:
/**
* 这里跳转到TwoActivity
* 并传一个List的集合
*/
Intent intent = new Intent(this,TwoActivity.class);
intent.putExtra("list",(Serializable)beanList);
startActivityForResult(intent,0x02);
break;
}
} @Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
switch (requestCode){
case 0x02:
if(resultCode == 0x04){
if(data != null){
setResult(0x03,data);
finish();
}
}
break;
}
}
}
package com.item.jiejie.intent; import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button; import com.item.jiejie.intent.bean.Bean; import java.util.ArrayList;
import java.util.List; public class TwoActivity extends AppCompatActivity implements View.OnClickListener { private Button btn_finish;
private Button btn_to_main;
private ArrayList<Bean> beans; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_two);
btn_finish = (Button)findViewById(R.id.btn_finish);
btn_to_main = (Button)findViewById(R.id.btn_to_main);
btn_to_main.setOnClickListener(this);
btn_finish.setOnClickListener(this); Intent intent = getIntent();
if(intent!=null){
beans = (ArrayList<Bean>)intent.getSerializableExtra("list");
Log.d("jiejie","从上个界面接受的List集合" + beans.size() + " " + beans.get(1).getName());
}
} @Override
public void onClick(View view) {
switch (view.getId()){
case R.id.btn_finish:
finish();
break;
case R.id.btn_to_main:
//将一个数据传到MainActivity并把OneActivity杀死
Intent intent = new Intent();
Bean bean = new Bean(1,"你好啊");
intent.putExtra("data",bean);
setResult(0x04,intent);
finish();
break;
}
}
}
package com.item.jiejie.intent.bean; import java.io.Serializable; /**
* 随便建个实体类 用来携带数据
* Created by Administrator o 2017/8/15.
*/ public class Bean implements Serializable {
private int type;
private String name; public Bean(int type, String name) {
this.type = type;
this.name = name;
} public int getType() {
return type;
} public void setType(int type) {
this.type = type;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
}
}
补充:添加一个overridePendingTransition来实现启动动画
如下是仿滴滴城市选择的动画效果
下面是3个动画:slide_in_up, slide_out_down,slide_no
<?xml version="1.0" encoding="utf-8"?> <translate
xmlns:android="http://schemas.android.com/apk/res/android"
android:fromYDelta="100%p"
android:toYDelta="0"
android:duration="@android:integer/config_mediumAnimTime" />
<?xml version="1.0" encoding="utf-8"?>
<translate
xmlns:android="http://schemas.android.com/apk/res/android"
android:fromYDelta="0"
android:toYDelta="100%p"
android:duration="@android:integer/config_mediumAnimTime" />
<?xml version="1.0" encoding="utf-8"?> <translate
xmlns:android="http://schemas.android.com/apk/res/android"
android:fromYDelta="0"
android:toYDelta="0"
android:duration="@android:integer/config_mediumAnimTime" />
启动Activity
startActivity(new Intent(this, TestActivity.class));
MainActivity.this.overridePendingTransition(R.anim.slide_in_up,R.anim.slide_no);
关闭Activity
TestActivity.this.finish();
TestActivity.this.overridePendingTransition(0, R.anim.slide_out_down);
现在TestActivity就有开启时(从底部打开),关闭时(从顶部向下关闭),但是滴滴出行的布局左右有15dp的间距可以显示上个Activity
所以我们可以把这个TestActivity的背景窗口设置为透明就可以
<style name="TranparentTheme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
<item name="android:windowBackground">@color/transparent</item>
<item name="android:windowIsTranslucent">true</item>
</style>
然后清单文件调用下
<activity android:name=".test.TestActivity"
android:theme="@style/TranparentTheme"/>
这样TestActivity就是透明窗口了,现在设置个内边距及背景颜色就可以了。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" > <LinearLayout
android:layout_width="match_parent"
android:layout_height="50dp"
android:layout_gravity="center_vertical"
android:background="#FF7200"
android:focusable="true"
android:focusableInTouchMode="true"
android:orientation="horizontal" > <TextView
android:id="@+id/tv_intent_back"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:drawableTop="@drawable/saosao"
android:gravity="center"
android:paddingBottom="6dp"
android:paddingLeft="12dp"
android:paddingRight="12dp"
android:paddingTop="4dp"
android:text="@string/sweep"
android:textColor="#fff"
android:textSize="12sp" /> <EditText
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_marginBottom="6dp"
android:layout_marginTop="6dp"
android:layout_weight="0.8"
android:background="#FF9D4D"
android:drawableRight="@drawable/ic_search"
android:gravity="center_vertical"
android:hint="@string/search"
android:paddingBottom="2dp"
android:paddingLeft="5dp"
android:paddingRight="2dp"
android:paddingTop="2dp"
android:singleLine="true"
android:textColorHint="#fff"
android:textSize="14sp" /> <TextView
android:id="@+id/tv_intent_other"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:drawableTop="@drawable/message"
android:gravity="center"
android:paddingBottom="2dp"
android:paddingLeft="12dp"
android:paddingRight="12dp"
android:paddingTop="6dp"
android:text="@string/message"
android:textColor="#fff"
android:textSize="12sp" >
</TextView>
</LinearLayout> <ListView
android:id="@+id/lv_list"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:cacheColorHint="#ff
Intent的简单使用的更多相关文章
- Android 使用 intent 实现简单登陆页面
前言 第一个 Android 程序,应该有些纪念的意义吧~ 主页面布局 给 Button 添加响应函数:android:onClick="login" public void lo ...
- Intent的简单概述
Intent是负责在系统组件之间传递信息的一个对象,就像名字一样,是一个意图,可以将当前组件的意图传递给系统,例如启动Activity等,还可以在传递的时候附加上一些值,可以用Bundle对象封装这些 ...
- Intent之复杂数据的传递
想在两个Activity之间传递一个对象Result,在网上差了很多,都需要序列化或者时下Paracelable,等等,试了很多都不行. 后来才制单,这个Result,根本不需要集成Sereriabl ...
- Android 中的 Intent 简介
Intent是Android程序中各组件之间进行交互的一种重要方式,它不仅可以指明当前组件想要执行的动作,还可以在不同组件之间传递数据. ------------------------------- ...
- 第十章:Intent详解
[正文] Intent组件虽然不是四大组件,但却是连接四大组件的桥梁,学习好这个知识,也非常的重要. 一.什么是Intent 1.Intent的概念: Android中提供了Intent机制来协助应用 ...
- Intent详解
ntent组件虽然不是四大组件,但却是连接四大组件的桥梁,学习好这个知识,也非常的重要. 一.什么是Intent 1.Intent的概念: Android中提供了Intent机制来协助应用间的交互与通 ...
- [Android] Intent详解
[转]http://www.cnblogs.com/engine1984/p/4146621.html [正文] Intent组件虽然不是四大组件,但却是连接四大组件的桥梁,学习好这个知识,也非常的重 ...
- 活动组件(三):Intent
大多数的安卓应用都不止一个Activity,而是有多个Activity.但是点击应用图标的时候,只会进入应用的主活动. 因此,前面我已经建立了一个主活动了,名字是myActivity,现在我再建立一个 ...
- 最全面的Android Intent机制讲解
对于大型软件开发经验较少的程序员来说,这可能是一个不太容易理解的抽象概念,因为它与我们平常使用的简单函数调用,或者通过库调用接口的方式不太一样.在 Intent 的使用中你看不到直接的函数调用,相对函 ...
随机推荐
- CentOS 中安装nginx
Centos6.8 yum 安装 nginx 1:使用yum安装nginx,安装nginx库 [root@hadoop110 //]# rpm -Uvh http://nginx.org/pack ...
- Linux环境查看系统参数
一.查看CPU信息 lscpu cat /proc/cpuinfo 二.查看CPU位数 getconf LONG_BIT 三.查看MEM信息 free free -m cat /proc/me ...
- 洛谷 P2680 运输计划(NOIP2015提高组)(BZOJ4326)
题目背景 公元 \(2044\) 年,人类进入了宇宙纪元. 题目描述 公元\(2044\) 年,人类进入了宇宙纪元. L 国有 \(n\) 个星球,还有 \(n-1\) 条双向航道,每条航道建立在两个 ...
- C. Connect Three Round #528 (Div. 2)【曼哈顿距离】
一.题面 题目链接 二.分析 这题的关键是要确定一个点是从三个点出发的交汇点,其他的只要结合曼哈顿距离的定义即可明白.因为是三个点,这个交汇点的坐标分别对应的就是x,y值的中值.然后一个小技巧就是曼哈 ...
- 【研究】XML外部实体注入(XXE)
在正式发布的2017 OWAST Top10榜单中,出现了三种新威胁: A4:XML外部实体注入漏洞(XXE) A8:不安全的反序列化漏洞 A10:不足的记录和监控漏洞 验证XXE: 构造请求 < ...
- PIE SDK打开长时间序列数据
1. 功能简介 时间序列数据(time series data)是在不同时间上收集到的数据,这类数据是按时间顺序收集到的,用于所描述现象随时间变化的情况.当前随着遥感卫星技术日新月异的发展,遥感卫星的 ...
- 多个模块使用python logging
链接:https://docs.python.org/2/howto/logging-cookbook.html#logging-cookbook 具体的使用方法,请参考如下代码: import lo ...
- git——合并分支
A将自己的本地代码提交到远程A分支,此时master主干上有B新提交的代码,如果此时A把自己的代码merge到主干,会有冲突,那怎么办? 1.A将自己的代码提交到自己的A分支 2.git fetch ...
- vue组件传参
一.父子组件的定义 负值组件的定义有两种,我称为常规父子组件和特殊父子组件. 1.1.常规父子组件 将其他组件以import引入用自定义标签接收,在当前组件中component里注册该标签,页面上可以 ...
- Python 的 __new__()方法与实例化
__new__() 是新式类中才有的方法,它执行在构造方法创建实例之前.可以这么理解,在 Python 中类中的构造方法 __init__() 负责将类实例化,而在 __init__() 启动之前,_ ...