主要实现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的简单使用的更多相关文章

  1. Android 使用 intent 实现简单登陆页面

    前言 第一个 Android 程序,应该有些纪念的意义吧~ 主页面布局 给 Button 添加响应函数:android:onClick="login" public void lo ...

  2. Intent的简单概述

    Intent是负责在系统组件之间传递信息的一个对象,就像名字一样,是一个意图,可以将当前组件的意图传递给系统,例如启动Activity等,还可以在传递的时候附加上一些值,可以用Bundle对象封装这些 ...

  3. Intent之复杂数据的传递

    想在两个Activity之间传递一个对象Result,在网上差了很多,都需要序列化或者时下Paracelable,等等,试了很多都不行. 后来才制单,这个Result,根本不需要集成Sereriabl ...

  4. Android 中的 Intent 简介

    Intent是Android程序中各组件之间进行交互的一种重要方式,它不仅可以指明当前组件想要执行的动作,还可以在不同组件之间传递数据. ------------------------------- ...

  5. 第十章:Intent详解

    [正文] Intent组件虽然不是四大组件,但却是连接四大组件的桥梁,学习好这个知识,也非常的重要. 一.什么是Intent 1.Intent的概念: Android中提供了Intent机制来协助应用 ...

  6. Intent详解

    ntent组件虽然不是四大组件,但却是连接四大组件的桥梁,学习好这个知识,也非常的重要. 一.什么是Intent 1.Intent的概念: Android中提供了Intent机制来协助应用间的交互与通 ...

  7. [Android] Intent详解

    [转]http://www.cnblogs.com/engine1984/p/4146621.html [正文] Intent组件虽然不是四大组件,但却是连接四大组件的桥梁,学习好这个知识,也非常的重 ...

  8. 活动组件(三):Intent

    大多数的安卓应用都不止一个Activity,而是有多个Activity.但是点击应用图标的时候,只会进入应用的主活动. 因此,前面我已经建立了一个主活动了,名字是myActivity,现在我再建立一个 ...

  9. 最全面的Android Intent机制讲解

    对于大型软件开发经验较少的程序员来说,这可能是一个不太容易理解的抽象概念,因为它与我们平常使用的简单函数调用,或者通过库调用接口的方式不太一样.在 Intent 的使用中你看不到直接的函数调用,相对函 ...

随机推荐

  1. Flask之flask_script

    flask端口占用 解决方案: lsof -i:5000 #查询是哪个进程占用的 kill PID 杀掉进程 flask_script之Manager类 from flask import Flask ...

  2. 将多个单元格内容连接到一个单元格中(EXCEL)

    连接符号:& 如下图,我们要将表格中每名员工的姓名.入职时间以及年龄放入到同一个单元格中,形成以“-”连接的形式. 这时我们要用到Excel中的连接符“&”,也就是在按下Shift+数 ...

  3. C++_类继承7-类设计回顾

    编译器生成的成员函数 编译器会自动生成一些公有的成员函数——特殊成员函数. 1. 默认构造函数 提供构造函数的动机之一是确保对象总能被正确地初始化.如果类包含指针成员,则必须初始化这些成员.最好提供一 ...

  4. 记一次ctf比赛解密题的解决(可逆加密基本破解之暴力破解)

    题目是这个样子的: code.txt的内容是这样: 有点吓人木?233333 其实解密之后是这样的: 找到一点安慰没? 好了,废话不多说.讲解一下思路吧. 我们知道base64加密是属于可逆加密的.简 ...

  5. PIE SDK临时元素的绘制

    1. 功能简介 在数据的处理中会用到临时元素的绘制,用于当前显示:临时元素包括点.线.面.文本.图片五种元素:目前PIE SDK支持这五种元素的绘制,下面对五种临时元素的绘制功能进行介绍. 2. 功能 ...

  6. Source Insight 4.0的使用(转)

    原作者地址:https://blog.csdn.net/qq_39660930/article/details/77499455 一.项目管理 1.新建一个项目 快捷键Alt+Shift+N可以打开新 ...

  7. web安全——文件上传

    文件上传本身不是漏洞,但如果文件上传功能的限制出现纰漏,允许了不合法且影响网站安全的文件的上传    可以将不合法且影响网站安全稳定性的文件等内容上传的均为“文件上传漏洞”        黑方将文件上 ...

  8. python从字符串内取两个符号之间的内容

    #取字符串中两个符号之间的东东 def txt_wrap_by(self,start_str, end, html): start = html.find(start_str) if start &g ...

  9. Immutable-不变模式与不变类

    不变模式的定义 一个对象在创建之后就不再变化,就是所谓的不变模式(Immutable Pattern): 一般来讲,一个对象要么就是可变对象(Mutable Object),要么就是不变模式(Immu ...

  10. c++ MFC图像处理CImage类常用操作代码

    原文作者:aircraft 原文地址:https://www.cnblogs.com/DOMLX/p/9598974.html MFC图像处理CImage类常用操作 CImage类头文件为#inclu ...