java intent用法_Intent的简单使用

主要实现Intent之间值得转递,如从AActivity到BActivity之间传一个数值,一个实体类,一个集合类

下面代码只要是实现对startActivityForResult的使用,用ABC 3个类来实现的,从A到B,再B到C。

现在的需求就是A到B到C,当C完成某个操作时,结束当前界面并转递数据给A。如需求中的添加购物地址,添加卡号。

如下是3个类的代码

packagecom.item.jiejie.intent;importandroid.content.Intent;importandroid.support.v7.app.AppCompatActivity;importandroid.os.Bundle;importandroid.util.Log;importandroid.view.View;importandroid.widget.Button;importandroid.widget.EditText;importcom.item.jiejie.intent.bean.BankCardUtil;importcom.item.jiejie.intent.bean.Bean;public class MainActivity extendsAppCompatActivity {privateButton btn_to_one;privateEditText edt_name;privateButton btn_name;privateString name;

@Overrideprotected voidonCreate(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(newView.OnClickListener() {

@Overridepublic voidonClick(View view) {

Intent intent= new Intent(MainActivity.this,OneActivity.class);/**第一种方式将数据封装到intent对象中*/

//intent.putExtra("data","随便写的");

/**第二种方式将数据封装至bundle对象中*/Bundle bundle= newBundle();

bundle.putString("data","随便写的");

intent.putExtras(bundle);

startActivityForResult(intent,0x01);

}

});

btn_name.setOnClickListener(newView.OnClickListener() {

@Overridepublic voidonClick(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);

}

});

}

@Overrideprotected void onActivityResult(int requestCode, intresultCode, 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;

}

}

}

packagecom.item.jiejie.intent;importandroid.content.Intent;importandroid.support.v7.app.AppCompatActivity;importandroid.os.Bundle;importandroid.util.Log;importandroid.view.View;importandroid.widget.Button;importandroid.widget.TextView;importcom.item.jiejie.intent.bean.Bean;importjava.io.Serializable;importjava.util.ArrayList;importjava.util.List;public class OneActivity extends AppCompatActivity implementsView.OnClickListener {privateButton btn_finish;privateTextView tv_message;privateButton btn_to_two;private List beanList = new ArrayList<>();

@Overrideprotected voidonCreate(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"));

}

@Overridepublic voidonClick(View view) {switch(view.getId()){caseR.id.btn_finish:

finish();break;caseR.id.btn_to_two:/*** 这里跳转到TwoActivity

* 并传一个List的集合*/Intent intent= new Intent(this,TwoActivity.class);

intent.putExtra("list",(Serializable)beanList);

startActivityForResult(intent,0x02);break;

}

}

@Overrideprotected void onActivityResult(int requestCode, intresultCode, Intent data) {super.onActivityResult(requestCode, resultCode, data);switch(requestCode){case 0x02:if(resultCode == 0x04){if(data != null){

setResult(0x03,data);

finish();

}

}break;

}

}

}

packagecom.item.jiejie.intent;importandroid.content.Intent;importandroid.support.v7.app.AppCompatActivity;importandroid.os.Bundle;importandroid.util.Log;importandroid.view.View;importandroid.widget.Button;importcom.item.jiejie.intent.bean.Bean;importjava.util.ArrayList;importjava.util.List;public class TwoActivity extends AppCompatActivity implementsView.OnClickListener {privateButton btn_finish;privateButton btn_to_main;private ArrayListbeans;

@Overrideprotected voidonCreate(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)intent.getSerializableExtra("list");

Log.d("jiejie","从上个界面接受的List集合" + beans.size() + " " + beans.get(1).getName());

}

}

@Overridepublic voidonClick(View view) {switch(view.getId()){caseR.id.btn_finish:

finish();break;caseR.id.btn_to_main://将一个数据传到MainActivity并把OneActivity杀死

Intent intent = newIntent();

Bean bean= new Bean(1,"你好啊");

intent.putExtra("data",bean);

setResult(0x04,intent);

finish();break;

}

}

}

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

packagecom.item.jiejie.intent.bean;importjava.io.Serializable;/*** 随便建个实体类 用来携带数据

* Created by Administrator o 2017/8/15.*/

public class Bean implementsSerializable {private inttype;privateString name;public Bean(inttype, String name) {this.type =type;this.name =name;

}public intgetType() {returntype;

}public void setType(inttype) {this.type =type;

}publicString getName() {returnname;

}public voidsetName(String name) {this.name =name;

}

}

View Code

补充:添加一个overridePendingTransition来实现启动动画

如下是仿滴滴城市选择的动画效果

下面是3个动画:slide_in_up,  slide_out_down,slide_no

xmlns:android="http://schemas.android.com/apk/res/android"android:fromYDelta="100%p"android:toYDelta="0"android:duration="@android:integer/config_mediumAnimTime" />

xmlns:android="http://schemas.android.com/apk/res/android"android:fromYDelta="0"android:toYDelta="100%p"android:duration="@android:integer/config_mediumAnimTime" />

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的背景窗口设置为透明就可以

@color/colorPrimary

@color/colorPrimaryDark

@color/colorAccent

@color/transparent

true

然后清单文件调用下

这样TestActivity就是透明窗口了,现在设置个内边距及背景颜色就可以了。

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" >

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" />

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" />

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" >

android:id="@+id/lv_list"android:layout_width="match_parent"android:layout_height="match_parent"android:cacheColorHint="#ff

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值