在一个Activity的java程序中,具体看问题描述

在一个Activity的java程序中,具体看问题描述,第1张

使用Broadcast广播即可

android系统中,BroadcastReceiver的设计初衷就是从全局考虑的,可以方便应用程序和系统、应用程序之间、应用程序内的通信

在获取消息activity中建立BroadcastReceiver内部类,并且注册广播

示例代码如下

//接受消息的activity

public class MainActivity extends Activity {

private InnerReceiver receiver = new InnerReceiver();

@Override

protected void onCreate(Bundle savedInstanceState) {

superonCreate(savedInstanceState);

setContentView(Rlayoutactivity_main);

}

@Override

protected void onRestart() {

superonRestart();

//注册广播

IntentFilter filter = new IntentFilter("test");

registerReceiver(receiver, filter);

}

@Override

protected void onStop() {

superonStop();

取消广播

unregisterReceiver(receiver);

}

public class InnerReceiver extends BroadcastReceiver{

@Override

public void onReceive(Context context, Intent intent) {

//使用intent获取发送过来的数据

String msg = intentgetStringExtra("msg");

}

}

}package comexampledemo;

import androidappActivity;

import androidcontentIntent;

import androidosBundle;

import androidviewView;

import androidviewViewOnClickListener;

import androidwidgetButton;

import androidwidgetEditText;

//发送消息的activity

public class SendActivity extends Activity {

private Button btn;

private EditText text;

@Override

protected void onCreate(Bundle savedInstanceState) {

superonCreate(savedInstanceState);

setContentView(Rlayoutactivity_main);

btn = (Button)findViewById(Ridbutton);

text = (EditText)findViewById(Ridtext);

btnsetOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

Intent intent = new Intent("test");

intentputExtra("msg", textgetText()toString());

sendBroadcast(intent);

}

});

}

}

service类必须实现一个接收方法,接收中传递的是intent

@Override

public IBinder onBind(Intent intent) {

Bundle bundle = intentgetExtras();

String stringVal = bundlegetString("stringValue"); //用于接收字符串

int numVal = bundlegetInt("intValue"); //用于接收int类型数据

byte[] bytes = bundlegetByteArray("bytesValue"); //用于接收字节流,你可以把文件放入字节流

return null;

}

你可以用Bundle来接受你从Activity发过来的数据,然后使用Bundle提供各个方法来接受数据。

如果仅仅是字符串之类的,

使用getStringExtra方法直接接收即可。

@Override

public IBinder onBind(Intent intent) {

String str1 = intentgetStringExtra("str1");

String str2 = intentgetStringExtra("str2");

return null;

}

一个Android应用程序很少会只有一个Activity对象,如何在多个Activity之间进行跳转,而且能够互相传值是一个很基本的要求。

本次我们就讲一下,Android中页面跳转以及传值的几种方式!

Activity跳转与传值,主要是通过Intent类来连接多个Activity,通过Bundle类来传递数据。

最常见最一般的页面跳转代码,很简单,如下:

Intent intent = new Intent(Athis, Bclass);

startActivity(intent);

也可以这样写:

Intent intent = new Intent();

intentsetClass(Athis, Bclass);

startActivity(intent);

只要这两句,就可以实现从A页面跳转到B页面了。 (A、B均继承自Activity)

有的时候,在跳转页面时还需要传递数据,这个时候如何做呢?

如果数据比较少,比如只要传一个名字,那么只要j加一句"intentputExtra("Name", "feng88724");"即可,代码如下:

Intent intent = new Intent();

intentsetClass(Athis, Bclass);

intentputExtra("Name", "feng88724");

startActivity(intent);

如果数据比较多,就需要使用 Bundle类了,代码如下: (说明直接看注释)

Intent intent = new Intent(Athis, Bclass);

/ 通过Bundle对象存储需要传递的数据 /

Bundle bundle = new Bundle();

/字符、字符串、布尔、字节数组、浮点数等等,都可以传/

bundleputString("Name", "feng88724");

bundleputBoolean("Ismale", true);

/把bundle对象assign给Intent/

intentputExtras(bundle);

startActivity(intent);

以上我们讲的都是如何进行页面跳转及数据传递,那么在另一个页面B上,应该如何接收数据呢?

在A页面上是以Bundle封装了对象,自然在B页面也是以Bundle的方式来解开封装的数据。主要通过"getIntent()getExtras()"方法来获取Bundle,然后再从Bundle中获取数据。 也可以通过" thisgetIntent()getStringExtra("Name");"方法直接从Intent中获取数据。

从Bundle获取数据的代码:

@Override

public void onCreate(Bundle savedInstanceState) {

superonCreate(savedInstanceState);

/加载页面/

setContentView(Rlayoutmain);

/获取Intent中的Bundle对象/

Bundle bundle = thisgetIntent()getExtras();

/获取Bundle中的数据,注意类型和key/

String name = bundlegetString("Name");

boolean ismale = bundlegetBoolean("Ismale");

}

以上就是关于在一个Activity的java程序中,具体看问题描述全部的内容,包括:在一个Activity的java程序中,具体看问题描述、如何理解Android BroadcastReceiver 方法onReceive的参数intent、android怎么从一个activity获取另一个activity的信息等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9562945.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-29
下一篇 2023-04-29

发表评论

登录后才能评论

评论列表(0条)

保存