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 的使用中你看不到直接的函数调用,相对函 ...
随机推荐
- ScrollView-电影列表
ScrollView 的使用import React, { Component } from 'react';import { Platform, StyleSheet, Text, View, Sc ...
- [DEBUG]-[org.mybatis.spring.SqlSessionFactoryBean.buildSqlSessionFactory(SqlSessionFactoryBean.java:431)] 一直在创建sqlsession工厂原因
今天在做开发项目的时候出现一直在控台输出创建sqlsessionfactory'这个代码, tomcat一直在控制台上输出这个内容无法停止下来,那么到底是什么原因呢, 我们可以在输出信息上看到有个wa ...
- 【转】intellij idea使用指南—— 导入Eclipse的Web项目
通常一个团队中可能有人用eclipse,有人用intelliJ,那么经常会出现需要导入别人用eclipse建好的web项目.而IntelliJ提供了多种项目类型的导入方式,其中就有eclipse. 在 ...
- UVA - 10298 后缀数组(仅观赏)
题意:求最小循环节 \(KMP\)可以20ms通过,而\(da\)实现的后缀数组并无法在3000ms内通过 听说要用\(dc3\)才勉强卡过,这里仅列出\(da\)实现 #include<ios ...
- http简单请求 -- 复杂请求
- PHP sprintf() 函数
PHP sprintf() 函数 先说下为什么要写这个函数的前言,这个是我在微信二次开发的一个token验证文档也就是示例文档看到的一个函数,当时非常不理解,于是查了百度,但是很多结果都很笼统,结果也 ...
- [转] 用Python建立最简单的web服务器
[From] http://www.cnblogs.com/xuxn/archive/2011/02/14/build-simple-web-server-with-python.html 利用Pyt ...
- RSA加密、解密、签名、校验签名
先说下RSA概率: 公钥和私钥是通过本地openssl软件生成. 正常: 公钥加密=>私钥解密: 私钥签名=>公钥校验签名 最近做一个项目,对方用java公钥去校验签名,这边java的De ...
- oracle 基础知识(十二)----索引
一, 索引介绍 索引与表一样,也属于段(segment)的一种.里面存放了用户的数据,跟表一样需要占用磁盘空间.索引是一种允许直接访问数据表中某一数据行的树型结构,为了提高查询效率而引入,是一个独立于 ...
- spring-boot 1.4.x遇到的cpu高的问题
如果你的spring-boot应用里tomcat线程耗cpu较高,并主要耗在做读取jar的操作上(堆栈类似下面),可能跟我们遇到同样的问题. CRC32.update(byte[], int, int ...