Android传值方法细讲

合集下载

Android多个Activity之间的传值

Android多个Activity之间的传值

Android多个Activity之间的传值下⾯是主Activity的代码:开发:Activity之间的传值 - 复制代码代码如下:package com.chaoyang.activity;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.text.style.BulletSpan;import android.view.View;import android.widget.Button;import android.widget.Toast;public class MainActivity extends Activity {/** Called when the activity is first created. */@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(yout.main);Button button =(Button)findViewById(R.id.button);button.setOnClickListener(new View.OnClickListener() {//给按钮注册点击事件,打开新的Acticity@Overridepublic void onClick(View v) {// TODO Auto-generated method stub//为Intent设置要激活的组件(将要激活TheOtherActivity这个Activity)Intent intent =new Intent(MainActivity.this,TheOtherActivity.class);////写法⼀ intent.setClass(MainActivity.this, OtherActivity.class);//设置要激活的组件//写法⼆ intent.setComponent(new ComponentName(MainActivity.this, TheOtherActivity.class));//设置要激活的组件//第⼀种传值⽅式(代码看起来更加更简洁)/*intent.putExtra("name", "dinglang");intent.putExtra("age", 22);*///第⼆种传值⽅式Bundle bundle =new Bundle();bundle.putString("name", "dinglang");bundle.putInt("age", 22);intent.putExtras(bundle);/*Intent提供了各种常⽤类型重载后的putExtra()⽅法,如: putExtra(String name, String value)、 putExtra(String name, long value),在putExtra()⽅法内部会判断当前Intent对象内部是否已经存在⼀个Bundle对象,如果不存在就会新建Bundle对象,以后调⽤putExtra()⽅法传⼊的值都会存放于该Bundle对象这些其实可以通过看源码的,内部实现的原理都是⼀样的*///startActivity(intent);//不需要接收组件的返回值,就可以直接这样激活了//需要接收返回结果。

android中使用WebSocket传递数据

android中使用WebSocket传递数据

android中使用WebSocket传递数据WebSocket是一种在Web浏览器和服务器之间进行双向通信的协议,允许实时更新数据而无需重新加载页面。

在Android中,使用WebSocket可以方便地传输数据,并实现实时更新和通信。

1. 引入WebSocket库:要在Android应用程序中使用WebSocket,首先需要添加相应的库。

Android中常用的WebSocket库有OkHttp、Java-WebSocket等。

你可以通过在build.gradle文件中添加相应的依赖来引入这些库。

3. 设置WebSocket连接监听器:可以为WebSocket连接设置监听器,以便在连接状态发生变化时进行响应。

监听器通常包括onOpen、onMessage、onClose和onError等方法,用于处理打开、接收消息、关闭和错误事件。

你可以根据需要进行相应的处理。

4. 发送和接收消息:使用WebSocket可以发送和接收消息。

通过调用WebSocket对象的send方法可以发送消息给服务器,而接收到的消息通常通过监听器中的onMessage方法处理。

你可以根据消息的内容进行相应的操作。

注意,消息通常是以文本或二进制数据的形式进行传输。

5. 关闭WebSocket连接:当不再需要使用WebSocket连接时,应该关闭连接,以释放资源。

可以通过调用WebSocket对象的close方法来关闭连接。

在关闭连接前,可以释放一些资源或执行一些操作。

6. 错误处理:在使用WebSocket时,可能会发生一些错误,例如服务器无法连接、数据传输失败等等。

你可以在监听器的onError方法中处理这些错误情况,并根据实际需求进行相应的操作。

总的来说,使用WebSocket在Android中传递数据非常方便。

你可以通过简单的步骤创建WebSocket连接、设置监听器、发送和接收消息,并在需要时关闭连接。

这种方式可以实现实时更新和双向通信,非常适用于需要实时交互和数据更新的应用程序。

Android数据传递的六种方式

Android数据传递的六种方式

Android数据传递的六种方式使用Inten的putExtra传递第一个Activity中1 2 3 4 5 6//创建意图对象Intent intent = new Intent(this,TwoActivity.class); //设置传递键值对intent.putExtra("data",str);//激活意图startActivity(intent);第二个Activity中1 2 3 4 5 6// 获取意图对象Intent intent = getIntent();//获取传递的值String str = intent.getStringExtra("data"); //设置值tv.setText(str);使用Intention的Bundle传递第一个Activity中1 2 3 4 5 6 7 8 9//创建意图对象Intent intent = new Intent(MainActivity.this,TwoActivity.class); //用数据捆传递数据Bundle bundle = new Bundle();bundle.putString("data", str);//把数据捆设置改意图intent.putExtra("bun", bundle);//激活意图startActivity(intent);第二个Activity1 2 3 4 5//获取BundleIntent intent = getIntent();Bundle bundle = intent.getBundleExtra("bun"); String str = bundle.getString("data");tv.setText(str);使用Activity销毁时传递数据第一个Activity中1 2 3 4 5 6 7 8 9 10 Intent intent = new Intent(MainActivity.this,TwoActivity.class);//用一种特殊方式开启ActivitystartActivityForResult(intent, 11);//设置数据protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data);String str = data.getStringExtra("data");tvOne.setText(str);}第二个activity中1 2 3//设置返回的数据Intent intent = new Intent();intent.putExtra("data", edtOne.getText().toString().trim());4 5 6 setResult(3, intent); //关闭当前activityfinish();SharedPreferences传递数据第一个Activity中1 2 3 4 5 6 7 8 9SharedPreferences sp = this.getSharedPreferences("info", 1);//获取sp编辑器Editor edit = sp.edit();edit.putString("data", str);mit();//创建意图对象Intent intent = new Intent(MainActivity.this,TwoActivity.class); //激活意图startActivity(intent);第二个Activity中1 2 3SharedPreferences sp = this.getSharedPreferences("info", 1); //设置数据tv.setText(sp.getString("data", ""));使用序列化对象Seriazable 工具类1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17import java.io.Serializable;class DataBean implements Serializable { private String name;private String sex;public String getName() {return name;}public void setName(String name) { = name;}public String getSex() {return sex;}public void setSex(String sex) {this.sex = sex;}}第一个Activity1 2 3 4 5 6 7 8//创建意图Intent intent = new Intent(MainActivity.this,TwoActivity.class); DataBean bean = new DataBean();//通过set方法把数据保存到DataBean对象中bean.setName("啦啦");bean.setSex("男");intent.putExtra("key", bean);startActivity(intent);第二个Activity1 2 3 4 5 6Intent intent = getIntent();//反序列化数据对象Serializable se = intent.getSerializableExtra("key"); if(se instanceof DataBean){//获取到携带数据的DataBean对象dbDataBean db = (DataBean) se;tv.setText(db.getName()+"==="+db.getSex());78}使用静态变量传递数据第一个Activity1 2 3 4Intent intent = new Intent(MainActivity.this,TwoActivity.class); ="牛逼";TwoActivity.str="你说";startActivity(intent);第二个Activity1 2 3 4//静态变量protected static String name; protected static String str; tv.setText(str+name);以上所述是小编给大家介绍的关于Android Activity之间传递数据的6种方式,希望对大家有所帮助,如果大家有任何疑问请给我留言。

Android:Intent传递数据

Android:Intent传递数据

Android:Intent传递数据接收调⽤的Activity销毁后返回的数据调⽤MainActivity中:显式Intent调⽤并设置requestCode为1,在回调函数中接收返回的数据。

public class MainActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);requestWindowFeature(Window.FEATURE_NO_TITLE);setContentView(yout.activity_main);Button button = (Button)findViewById(R.id.button_exit);button.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {Intent intent = new Intent(MainActivity.this, TestActivity.class);startActivityForResult(intent, 1);}});}//调⽤的Activity销毁返回后执⾏的回调⽅法@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {switch (requestCode) {case 1:if(resultCode == RESULT_OK){String value = data.getStringExtra("key");Log.d("debug", value);}break;default:break;}}}被调⽤Activity中:通过两种不同形式返回不同数据(按button返回和按系统返回键返回)public class TestActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(yout.activity_test);Button button = (Button)findViewById(R.id.test_button);button.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {Intent intent = new Intent();intent.putExtra("key", "value_data_button");setResult(RESULT_OK, intent);finish();}});}//系统返回键事件处理函数@Overridepublic void onBackPressed() {Intent intent = new Intent();intent.putExtra("key", "value_data_backpressed");setResult(RESULT_OK, intent);finish();}}。

Android中两个Activity之间的传值问题

Android中两个Activity之间的传值问题

Android中两个Activity之间的传值问题Android 中两个Activity 之间的传值问题在Android项⽬中,有时需要⼀些全局的静态变量来保存⼀些数据,这样在关闭赋值界⾯后,其他的页⾯还可以调⽤这些数据。

但是我们知道,在Java中全局静态变量(java中没有全局变量这⼀个概念,但是java提供了public static关键字来实现⼀些类似于全局变量的关键字)都是在程序加载时就放⼈到内存中,它是存储在⽅法区⾥的。

如果程序不结束,它将⼀直存在。

这是会影响到系统的性能的。

那么在android中可不可以不通过这种⽅式来传递值呢?今天⾃⼰做了⼀个⼩demo,感觉还不错:不通过全局静态变量⽽实现两个Activity之间传递数据。

⼀个SendActivity(保存数据的⼀⽅,或者是传递数据的⼀⽅),⼀个ReceiverActivity(使⽤数据的⼀⽅)为了简单起见,每个Activity对应的布局⽂件中都只有⼀个按钮。

SendActivity的java代码public class SendActivity extends Activity {@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(yout.activity_send);//获取按钮对象Button btnSendButton = (Button)findViewById(R.id.btnSend);btnSendButton.setOnClickListener(new OnClickListener() {public void onClick(View v) {Intent intent = new Intent();//第⼀参数取的是这个应⽤程序的Context,⽣命周期是整个应⽤//第⼆个参数是要跳转的页⾯的全路径intent.setClassName( getApplicationContext(), "com.example.testofdialog.ReceiveActivity" );//Bundle类⽤作携带数据,它类似于Map,⽤于存放key-value名值对形式的值Bundle b = new Bundle();b.putString("我是key", "这⾥就是你要传递的内容了");//此处使⽤putExtras,接受⽅就响应的使⽤getExtraintent.putExtras( b );startActivity(intent);// 关闭当前页⾯System.exit(0);//⽆论是exit还是finish都是可以的//SendActivity.this.finish();}});}}ReceiveActivity的java代码public class ReceiveActivity extends Activity {@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(yout.activity_receive);Button btnReceiveButton = (Button)findViewById(R.id.btnReceive);btnReceiveButton.setOnClickListener(new OnClickListener() {public void onClick(View v) {//最后的参数⼀定要和发送⽅的相同,否则得到空值String rString = getIntent().getExtras().getString("我是key");Toast.makeText(ReceiveActivity.this, rString, Toast.LENGTH_SHORT).show();}});}}这⾥只是介绍了两个Activity之间的通过Intent传值的,那么如果有三个Activity是依次显⽰的,但是,第三个Activity需要⽤到第⼀个Activity中的值,这种⽅法是否还能够发挥功效?是否还有其他更好的⽅法?以上就是Android 两个Activity 之间的传值问题,如有疑问请留⾔或者到本站社区交流讨论,感谢阅读,希望能帮助到⼤家,谢谢⼤家对本站的⽀持!。

安卓活动间的传值问题

安卓活动间的传值问题

安卓活动间的传值问题1、向下⼀个活动传递数据Intent中提供了⼀系列的putExtra()⽅法的重载,可以把我们想要传的数据暂存在Intent中,启动⼀个活动后,只需把这些数据在从Intent 中,取出来即可。

做⼀个简单的Demo演⽰⼀下:新建项⽬MyDataTrans,同时在项⽬中新建类Second.java和布局second.xml。

在activity_main.xml中修改布局(TextView⽤于获取从上⼀活动或许的值):<LinearLayoutandroid:id="@+id/lin1"android:layout_width="fill_parent"android:layout_height="wrap_content"><Buttonandroid:id="@+id/btn"android:layout_width="fill_parent"android:layout_height="wrap_content"android:text="Click On"/></LinearLayout><LinearLayoutandroid:id="@+id/line2"android:layout_width="fill_parent"android:layout_height="wrap_content"android:layout_below="@id/lin1"><TextViewandroid:id="@+id/textView1"android:layout_width="match_parent"android:layout_height="wrap_content"/></LinearLayout>activity_main.xml在second.xml中修改布局(TextView⽤于获取从上⼀活动或许的值):<LinearLayout xmlns:android="/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical" ><TextViewandroid:id="@+id/textView2"android:layout_width="match_parent"android:layout_height="wrap_content"/><Buttonandroid:id="@+id/btn2"android:layout_width="fill_parent"android:layout_height="wrap_content"android:text="Back"/></LinearLayout>second.xml在MainActivity.java中添加按钮1的单击事件,跳转到活动2中,btn1=(Button)findViewById(R.id.btn);btn1.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View arg0) {// TODO Auto-generated method stubIntent intent1=new Intent(MainActivity.this,Second.class);intent1.putExtra("mydata", "你好,我来⾃界⾯1。

Android传值方法细讲

Android传值方法细讲

在Android这一开源的手机操作系统中,有很多应用技巧以及修改方式值得我们去掌握,来改变手机性能,满足我们的应用需求。

在这里我们就先来为大家详细介绍一下有关Android传值的方法。

o Android Widget工具箱o Android菜单系统基本概念详解o Android Intent应用实践经验总结o Android数据库工作方式解析o Android组件相关概念总结当一个application 中有多个 Activity的时候,那么每个Activity之前的传值就是一个问题了。

所以这里介绍一下相关的方法。

在Android传值,主要使用两种方法一个是PendingIntent 另一个就是广播了按照大类,我把Android传值相关的类进行了划分1.实体类 Intent 、Context 、 BroadcastReceiver2.方法类 PendingIntent Context.sendBroadcast传递的方法也就是方法类中的两种A Intent 字面意思是意图,其实他的效果和字面意思差不多,高焕堂的很多书中都有详细的介绍。

他就像一个快递员,而且是个无所不能的快递员,什么都能送,只要你能把信息加到他上面去详细的使用方法可以再SDK中找到,如果想要添加你想要的内容可以用 Intent.set**系列方法。

B Context 这个翻译成环境更好一些顾名思义他就是获取我们当前的环境状态,比如说我想知道现在用户使用的什么语言,处于什么状态,航班、静音。

用户有没有接打电话等等,就像我们获取系统时间一样。

Context也我们设置了一个容器让我们来获取系统的状况。

因为这个系统状况很重要,有的时候就是以系统状态为依据,所以Intent 好多方法都要加入这个都需要 Intent.contextC BroadcastReceiver 是专门用来接收广播的类所以他有一个OnReceive()的方法而具体的接受我在下面详述。

【推荐下载】Android学习记录01——Activity传值

【推荐下载】Android学习记录01——Activity传值

Android 学习记录01——Activity 传值2017/03/21 25 今天小小地学习了Android 中的Activity 传值部分。

首先,Activity 是Android 四大组件之一,也是Android 中最基本的模块之一,简单点说,Activity 是用来与用户交互的。

参考课本,学习了Activity 的传值,也深入体会了Activity 的使用方法。

在本例中,创建了3 个Activity,分别是MainActivity、ActivityB、ActivityC,分别有三个布局文件。

MainActivity 界面有2 个按钮,分别跳转到ActivityB 和ActivityC,其中用户可以在ActivityC 界面输入字符串,点击“确认”按钮,可以将值传回到MainActivity 界面,并显示出来。

1.Activity 间的跳转使用了Intent 组件(四大组件之一),并调用startActivity()方法启动:Intent intent = new Intent(MainActivity.this,ActivityB.class);startActivity(intent);创建intent 实现从MainActivity 跳转到ActivityB。

2.为了实现Activity 间的传值,调用了startActivityForResult()方法:Intent _intent = new Intent(MainActivity.this,ActivityC.class);startActivityForResult(_intent,100);创建_intent 实现从MainActivity 跳转到ActivityC,并调用startActivityForResult 将用户在ActivityC 中输入的值回传给MainActivity,这里需要2 个参数,另一个是requestCode 常量,Android 规定此常量为一个比〇大的值,这里简单地定义为100,此值在回调方法中将用到。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

在Android这一开源的手机操作系统中,有很多应用技巧以及修改方式值得我们去掌握,来改变手机性能,满足我们的应用需求。

在这里我们就先来为大家详细介绍一下有关Android传值的方法。

o Android Widget工具箱
o Android菜单系统基本概念详解
o Android Intent应用实践经验总结
o Android数据库工作方式解析
o Android组件相关概念总结
当一个application 中有多个 Activity的时候,那么每个Activity之前的传值就是一个问题了。

所以这里介绍一下相关的方法。

在Android传值,主要使用两种方法一个是PendingIntent 另一个就是广播了
按照大类,我把Android传值相关的类进行了划分
1.实体类 Intent 、Context 、 BroadcastReceiver
2.方法类 PendingIntent Context.sendBroadcast
传递的方法也就是方法类中的两种
A Intent 字面意思是意图,其实他的效果和字面意思差不多,高焕堂的很多书中都有
详细的介绍。

他就像一个快递员,而且是个无所不能的快递员,什么都能送,只要你能把信息加到他上面去
详细的使用方法可以再SDK中找到,如果想要添加你想要的内容可以用 Intent.set**系列方法。

B Context 这个翻译成环境更好一些
顾名思义他就是获取我们当前的环境状态,比如说我想知道现在用户使用的什么语言,处于什么状态,航班、静音。

用户有没有接打电话
等等,就像我们获取系统时间一样。

Context也我们设置了一个容器让我们来获取系统的状况。

因为这个系统状况很重要,有的时候就是以系统状态为依据,所以Intent 好多方法都要加入这个都需要 Intent.context
C BroadcastReceiver 是专门用来接收广播的类
所以他有一个OnReceive()的方法而具体的接受我在下面详述。

α PendingIntent 这个方法就是直接传递 Intent
好传出了,怎么才能保证Android传值能接收到呢?因为Intent是一个很强大的快递员,他能记录货物需要达到的地点,所以PendingIntent 干吗,他相当于一个Intent的工作场所,他只负责
Intent送出去
而Intent 去那里,直接告诉 Intent就可以了
通过下面这条语句就可以达到显影的效果 intent.setClass(Activity.this//指代Activity, Report.class//指代目标类);
接收端怎么获取消息呢,这个也简单。

因为Intent 已经按照他自己的地址来到了所处的地方,我们直接实例化就行了。

当然这是在简单的情况下,就是说如果这个公司只有一个货物所以我们之需要一个快递员就可以,接收方目前只有这个货物需要接收,那快递员一到他接收方只要确认一下就知道他来干嘛了。

但多数情况下,两家公司的业务非常繁忙,所以可能有多个快递员,多个货物,同一个部门可能有多个。

那么怎么来做呢。

就需要加限定规则
(1)首先是在Intent中加限定,可以设定一个 Permission String 就像暗号一样,如果暗号对了肯定错不了(这个在广播方法中很重要)
(2)另一个就是在实例化的时候确定好实例的是那个一个参数
β Android传值使用广播来进行数据传递
如果直接使用PendingIntent 是有目的的传送,那广播可真算是漫无目的的传送信息了
其实Broadcast 中传递的内容也是Intent ,但可以传递的范围可是远的多。

而且系统的很多其他程序也在发送广播,比如说手机的状态,还要说一下航班状态,如果出于航班状态,那么系统就会自动发送广播,而我们只要去接收就好,这样我们就能知道哦,系统现在时在广播状态。

而在Widget 接受方法使用广播,一方面是因为AppWidget 本来就是继承BroadcastReciever 所以比较纯,不会出问题。

另外,这个是我的个人判断,因为Widget 还是和普通的app不同,我估计如果直接给 Widget传送 Intent 又会受到限制,就像handler的一样,当然这是我的猜测,但是感觉还是用广播靠谱
广播的载体是Intent,但是他们的标号则是Action。

系统内定了很多Action。

当然我们也可以自己定义Intent 。

之需要 Intent("你自己定义的一个字符串") 接收方麻烦一些需要注册
registerReceiver(intent, commandFilter);
第二个参数是Intent的过滤,而且不能为空。

如果是自己定义的Action 那还需要
6.String action = intent.getAction();
7.if (action.equals("自定定义的Action"))
8.{ 相应的Intent的实例化必须在这里进行
9.}
Σ Widget 使用 PendingIntent 是因为没有其他的方法了。

说实话 AppWidget 就给我们一个可以使用RemoteViews 的方法,别的都不能用。

所以就顺势写了一个SetPeningIntent 当然这个方法也有很多固定的用法,启动服务,启动活动,发送广播,基本上该有的他都有了。

3.最后再来说一下 Action 其实一个字符串但是这个字符串因为很长所以基本上很少有人和其明明重合
他们就是来定义一些状态,还是航空状态,他的Action就是
ACTION_AIRPLANE_MODE_CHANGED
以上就是对Android传值的相关介绍。

相关文档
最新文档