精华内容
下载资源
问答
  • 关键代码: activity.main中  Intent intent = new Intent();// 创建intent对象  intent.setAction("test_action");// 为intent对象设置自定义动作  startActivity(intent);// 将intent

    1.包含自定义动作的隐式Intent:

    关键代码:

    activity.java中

                    Intent intent = new Intent();// 创建intent对象
                    intent.setAction("test_action");// 为intent对象设置自定义动作
                    startActivity(intent);// 将intent传递给activity

    AndroidMainfest.xml中

                <!--在要启动的secondactivity的中加入如下代码-->

                <intent-filter >
                    <action android:name="test_action" />
                    <category android:name="android.intent.category.DEFAULT" />
                </intent-filter>
    2.通过Intent打开网页
    activity.java中
                    Intent intent = new Intent();// 创建intent对象
                    intent.setAction(Intent.ACTION_VIEW);// 为intent对象设置动作
                    intent.setData(Uri.parse("http://www.baidu.com"));//为intent设置数据
                    startActivity(intent);// 将intent传递给activity
    展开全文
  • 第一步:创建两个Activity(创建Android工程默认创建一个了,再创建一个就行了,这里我创建了...在第二个SecondActivity中,添加自定义的IntentFilter android:name="com.example.activity.SecondActivity"
    第一步:创建两个Activity(创建Android工程默认创建一个了,再创建一个就行了,这里我创建了SecondActivity)
    


    第二步:
    在配置文件中:
    在第二个SecondActivity中,添加自定义的IntentFilter
    <activity
                android:name="com.example.activity.SecondActivity"
                android:label="@string/title_activity_second" >
                <intent-filter>
                    <action android:name="cn.com.hpu.edu.SECOND_ACTIVITY" />
                    <action android:name="cn.com.hpu.edu.SECOND" />
                    <action android:name="cn.com.hpu.edu.SECONDACTIVITY" />
    
                    <category android:name="android.intent.category.DEFAULT" />
                    <category android:name="android.intent.category.CODE" />
                    <category android:name="android.intent.category.SECOND" />
                </intent-filter>
            </activity>


    在MainActivity中:
    package com.example.activity;
    
    import android.os.Bundle;
    import android.app.Activity;
    import android.content.Intent;
    import android.view.Menu;
    import android.view.View;
    import android.view.View.OnClickListener;
    
    public class MainActivity extends Activity {
    
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.activity_main);
    		findViewById(R.id.btn_start_SecondActivity).setOnClickListener(new OnClickListener() {
    
    			public void onClick(View v) {
    				// TODO Auto-generated method stub
    				//这里指定的Action必须在配置文件中有匹配的,至少匹配一个action,否则会报错,具体参考我的上一篇文章Intent与IntentFilter文章
    				Intent intent = new Intent("cn.com.hpu.edu.SECOND");
    				intent.addCategory("android.intent.category.CODE");
    				startActivity(intent);
    
    			}
    		});
    	}
    }
    


    展开全文
  • intent传递自定义对象

    2015-09-27 15:20:00
    intent传递自定义对象,很简单,只需要强转成serializable型就可以
  • 使用Intent传递自定义对象

    千次阅读 2016-08-05 09:15:51
    欢迎转载!用Intent传递基本数据类型很方便,如://传递参数 intent.putExtra("sData", "hello"); intent.putExtra("iData", 80); //获取参数 getIntent.getStringExtra(...下面介绍传递自定义参数的方法1、Serializab

    欢迎转载!

    用Intent传递基本数据类型很方便,如:

    //传递参数
    intent.putExtra("sData", "hello");
    intent.putExtra("iData", 80);
    //获取参数
    getIntent.getStringExtra("sData");
    getIntent.getIntExtra("iData", 0);
    

    下面介绍传递自定义参数的方法

    1、Serializable方式

    Serializable即序列化,将对象转换成可存储或可传输的状态,序列化的对象可在网络传输或本地存储,序列化的方法就是让自定义对象实现Serializable接口。

    public class Person implements Serializable {
    
            private String mName;
            private int mAge;
            ......
    }
    
    //实现了Serializable接口,即可直接传递自定义对象了
    intent.putExtra("pData", person);
    
    //获取序列化的自定义对象
    Person person = (Person) getSerializableExtra("pData");
    

    2、Parcelable方式

    Parcelable方式将完整的对象分解为Intent支持的数据类型,实现传递的功能

    public class Person implements Parcelable {
    
        private String mName;
        private int mAge;
        ......
    
        @Override
        public int describeContents() {
            return 0;
        }
    
        @Override
        public void writeToParcel(Parcel dest, int flags) {
            dest.writeString(mName);
            dest.writeInt(mAge);
        }
    
        public static final Parcelable.Creator<Person> CREATOR = new Parcelable.Creator<Person>() {
            @Override
            public Person createFromParcel(Parcel source) {
                Person person = new Person();
                person.mName = source.readString();
                person.mAge = source.readInt();
                return person;
            }
    
            @Override
            public Person[] newArray(int size) {
                return new Person[size];
            }
        };
    }
    

    Parcelable的实现方式要稍微复杂些,实现Parcelable接口,需重写describeContents()和writeToParcel()这2个方法。

    其中describeContents()方法直接返回0即可,而writeToParcel()方法需调用Parcel的writeXxx()方法将Person类中的字段转化为基本类型写出,字符串调用writeString()方法,整型调用writeInt()方法,以此类推。

    还必须在Person类中提供一个常量CREATOR,这里创建Parcelable.Creator()接口的一个实现,将泛型指定为Person。

    重写createFromParcel()和newArray()方法,在createFromParcel()中去读取写出的mName()和mAge(),并创建一个Person对象进行返回,注意类成员变量的读取顺序一定要和写出的顺序完全相同。newArray()方法只需new处一个数组并使用方法中传入的size()作为数组大小即可。

    相比之下,Serializable方式较简单,但需把整个对象序列化,因此效率方面会比Parcelable方式低一些,故推荐使用Parcelable方式实现Intent传递自定义对象。

    展开全文
  • Android Intent 传递自定义对象

    千次阅读 2018-11-06 14:37:14
    Intent 可以用来启动活动、发送广播、启动服务等,通过 putExtra 方法可以添加一些附加数据,达到传值的效果,但若想传递自定义对象的时候就无能为力了。 可以通过使用 Serializable 接口、Parcelable 接口以及转换...

    Intent 可以用来启动活动、发送广播、启动服务等,通过 putExtra 方法可以添加一些附加数据,达到传值的效果,但若想传递自定义对象的时候就无能为力了。

    可以通过使用 Serializable 接口、Parcelable 接口以及转换对象为字符串的方式进行传递。

    1、Serializable

    表示将一个对象转为字节实现可存储或可传输的状态,一个对象能够序列化的前提是实现 Serializable 接口。

    Model:

    public class Person implements Serializable {
    
        private String name;
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    }
    

    传递对象:

    Person person = new Person();
    person.setName("wuzy");
    Intent intent = new Intent(MainActivity.this, Main2Activity.class);
    intent.putExtra("person_data",person);
    startActivity(intent);
    

    接收对象:

    Person person = (Person) getIntent().getSerializableExtra("person_data");
    

    2、Parcelable

    将一个完整的对象进行分解,分解后的每一部分都是 Intent 所支持的数据类型。

    Model:

    public class Person implements Parcelable {
    
        private String name;
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        @Override
        public int describeContents() {
            return 0;
        }
    
        /*
        将想要传递的数据写入到 Parcel 容器中
         */
        @Override
        public void writeToParcel(Parcel parcel, int i) {
            parcel.writeString(name);
        }
    
        public static final Creator<Person> CREATOR = new Creator<Person>() {
            /*
            用于将写入 Parcel 容器中的数据读出来,用读出来的数据实例化一个对象,并且返回
             */
            @Override
            public Person createFromParcel(Parcel in) {
                Person person = new Person();
                person.setName(in.readString());
                return person;
            }
    
            /*
            创建一个长度为 size 的数组并且返回,供外部类反序列化本类数组使用
             */
            @Override
            public Person[] newArray(int size) {
                return new Person[size];
            }
        };
    }
    

    传递对象:

    Person person = new Person();
    person.setName("wuzy");
    Intent intent = new Intent(MainActivity.this, Main2Activity.class);
    intent.putExtra("person_data",person);
    startActivity(intent);
    

    接收对象:

    Person person =  getIntent().getParcelableExtra("person_data");
    

    3、转化为 JSON 字符串

    Model:

    public class Person {
        private String name;
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    }
    

    传递对象:

    Person person = new Person();
    person.setName("wuzy");
    Intent intent = new Intent(MainActivity.this, Main2Activity.class);
    intent.putExtra("person_data",new Gson().toJson(person));
    startActivity(intent);
    

    接受对象:

    String personJson = getIntent().getStringExtra("person_data");
    Person person =  new Gson().fromJson(personJson, Person.class);
    

    速度上,使用Parcelable 速度最快,Serializable 次之,转换为 JSON 字符串最慢。


    转自:https://www.jianshu.com/p/6b6adaeadc15
     

    展开全文
  • Android开发——Intent传递自定义自定义类 public class People implements Serializable(){ private String name; private int age; //构造器 public People(){} public People( String name, int age ){
  • Android intent传递自定义对象

    千次阅读 2018-11-27 12:52:44
    Serializable即序列化,将对象转换成可存储或可传输的状态,序列化的对象可在网络传输或本地存储,序列化的方法就是让自定义对象实现Serializable接口。 步骤一:自定义对象implements Serializable 步骤二: ...
  • Intent ACTION值自定义

    2015-11-25 15:01:59
    对于Action,有时候我们不一定非得用系统自定义的值,而可以自定义,同样可以达到启动其它Activity的效果。   这里我们需要明确如下定义: 1.ACTION的值是一个类型为String的字符串 2.Intent中ACTION的...
  • intent 传值 自定义对象 list

    千次阅读 2014-01-08 19:45:33
    if (fileIntent != null) {  Bundle bundle = fileIntent.getExtras();  if (bundle != null) {  folderPath = (String) bundle.get("folderPath");  mFil
  • 1.Serializable(不推荐) 实现要点:类继承Serializable接口 举例:MainActivity通过Intent跳转到SubActivity的时候传递Test类... Intent intent = new Intent(MainActivity.this, SubActivity.class);  Test tes
  • 但是大多数情况下我们需要Intent传递自定义类的对象,这些自定义类是我们对一些数据的封装,这时候你会发现传递不了了,网上的一个解决方法是对自定义类序列化,方法也非常简单,直接让我们自定义的类实现一个...
  • Intent ACTION值自定义

    2016-08-05 17:16:30
    对于Action,有时候我们不一定非得用系统自定义的值,而可以自定义,同样可以达到启动其它Activity的效果。   这里我们需要明确如下定义: 1.ACTION的值是一个类型为String的字符串 2.Intent中ACTION的值是双向...
  • 主要介绍了Android编程实现使用Intent传输包含自定义类的ArrayList,涉及Android对象序列化、反序列化、Intent数据传输等相关操作技巧,需要的朋友可以参考下
  • 使用Bundle 或者Intent传递自定义对象,需要把自定义对象序列化。 序列化表示将一个对象转换成可存储或可传输的状态。序列化后的对象可以在网络上传输,也可以存储到本地。序列化的方法有两种:Serializable方式和...
  • Intent intent=new Intent(); Bundle bundle=new Bundle(); bundle.putSerializable("choose", chooseeat); intent.putExtras(bundle); intent.setClass(Main.this, Shake.class); start...
  • Android中传递自定义对象类型的数据
  • 自定义intent action

    千次阅读 2011-11-25 16:58:05
    可以使用系统定义的intent,也可以使用自己自定义intent 在自己的java文件定义一个字符串代表action public static final string MY_ACTION="com.chris.YH.MyTest.READ"; 这个字符串最好是package nam
  • 自定义intent

    2013-09-06 16:18:36
    可以使用系统定义的intent,也可以使用自己自定义intent 在自己的java文件定义一个字符串代表action public static final string MY_ACTION="com.chris.YH.MyTest.READ"; 这个字符串最好是package name + ...
  • 一、新建自定义Intent 1.Xcode->New->File->搜索Intent 2.左下角'+'号新建Intent 3.完善Intent资料 注意:1.Intent的命名,如果命名为A,编译之后,系统自动生成AIntent.h文件,import AIntent.h即可...
  • 自定义 action 的 intent

    2013-02-19 03:04:24
    请问有什么方法来创建一个intent,这个intent里有自定义action?就像 ACTION_CUSTOM。 bundle_details.putString("query_details", searchIntent.getStringExtra(SearchManager.QUERY)); bundle_details....

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 72,832
精华内容 29,132
关键字:

intent自定义