使用Broadcast广播即可
android系统中,BroadcastReceiver的设计初衷就是从全局考虑的,可以方便应用程序和系统、应用程序之间、应用程序内的通信
在获取消息activity中建立BroadcastReceiver内部类,并且注册广播
示例代码如下
//接受消息的activitypublic 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的信息等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)