主要实现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. MySql数据库数据类型及约束介绍

    1,MySql中数据类型介绍 整型及浮点型 数据类型 存储范围 字节 TINYINT 有符号值:-2^到2^7-1 无符号值:0到2^8-1 2 SMALLINT 有符号值:-2^15到2^15-1 ...

  2. chrome 相关设置.

    1. 使用chrome 添加道桌面的快捷方式,自动打开两个 tab 解决方法: chrome://apps/ 右击 你的应用图标..勾选在新窗口打开.

  3. webpack 4.0 安装出现的小问题 (One CLI for webpack must be installed)

    安装的webpack版本是4.11.0,运行命令npm start 提示:One CLI for webpack must be installed. These are recommended ch ...

  4. no git binary found in $path(已解决,但是还有疑问)

    跟同行研究个项目代码,他把代码打包发我后,我解压到本地,路径和我本地个人项目路径基本相同, 但是当执行npm install时,就报了 no git binary found in $path ,这个 ...

  5. CentOS7下php安装mcrypt扩展

    https://blog.csdn.net/skykingf/article/details/40185405 以下步骤均为本人实际操作,可能与你的安装方法有所区别,但我会尽量排除疑惑) 大致步骤(1 ...

  6. properties 资源文件读取

    1.   在source中添加资源文件 resource.properties #FTP 相关配置 #FTP 的ip地址 FTP_ADDRESS=192.168.88.142 FTP_PORT=21 ...

  7. PHPCMS中load_model,load_app_class, load_sys_func

    phpcms v9 二次开发: 在一个项目开发中遇到需要二次开发,但我们需要了解load_model,load_app_class, load_sys_func的含义: 1.调用数据库模型 //从”p ...

  8. session.flush()与session.clear()的区别及使用环境

    [From] http://blog.csdn.net/leidengyan/article/details/7514484 首先session是有一级缓存的,目的是为了减少查询数据库的时间,提高效率 ...

  9. WPF Binding的值转换器

    注意:值转换器中用于传入额外信息的参数 parameter 在 Binding 时使用 Binding 对象的 ConverterParameter 属性指定,但是设置了 ConverterParam ...

  10. windows删除指定日期前的文件

    @ echo offforfiles /p .\ /s /m 2008*.* /d -7 /c "cmd /c echo @file>>.\del.txt"forfil ...