Android 显示从一个活动到另一个活动的警报
我正在开发一个Android应用程序,我在后台每5秒调用一个活动上的Web服务,现在假设他们有2个活动 活动A 活动B 在活动A上,我每5秒收到一次web服务响应,当前我的控件在活动B上,现在我想通过保持对活动B的控制来显示活动A发出的警报 简言之,我想显示一些信息,这是在一个页面的背景来的页面,我现在所在的位置 我是android新手,请给我建议一些解决这个问题的方法Android 显示从一个活动到另一个活动的警报,android,alert,Android,Alert,我正在开发一个Android应用程序,我在后台每5秒调用一个活动上的Web服务,现在假设他们有2个活动 活动A 活动B 在活动A上,我每5秒收到一次web服务响应,当前我的控件在活动B上,现在我想通过保持对活动B的控制来显示活动A发出的警报 简言之,我想显示一些信息,这是在一个页面的背景来的页面,我现在所在的位置 我是android新手,请给我建议一些解决这个问题的方法 谢谢基本上你需要发布者-订阅者模式 检查链接这是我使用的最简单的发布订阅类, 其概念是,活动B订阅活动A,因此当活动A发生某
谢谢基本上你需要发布者-订阅者模式 检查链接这是我使用的最简单的发布订阅类, 其概念是,活动B订阅活动A,因此当活动A发生某些属性更改时,它将触发活动B收到的propertyChange,而未来的过程将由活动B完成
对于订阅活动A,活动B实现PropertyChangeListener,我建议的一个解决方案是 创建一个名为callAlertBox.java的类,如下所示
public class callAlertBox {
private static Activity activity ;
public static Activity getActivity() {
return activity;
}
public static void setActivity(Activity mactivity) {
activity = mactivity;
}
public static void showMyAlertBox(){
AlertDialog ad = new AlertDialog.Builder(activity).create();
ad.setCancelable(true); // This blocks the 'BACK' button if false
ad.setMessage("Hello World");
ad.show();
}
}
现在,在每个可能调用此警报框的活动中,将此代码放在其onResume()方法上
现在你可以打电话了
callAlertBox.showMyAlertBox();
从任何活动中,您都将获得警报框
编辑
MainActivity.java文件
public class MainActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button btn1 = (Button) findViewById(R.id.button1);
btn1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
startActivity(new Intent( MainActivity.this,Act1.class));
}
});
Button btn2 = (Button) findViewById(R.id.button2);
btn2.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
startActivity(new Intent( MainActivity.this,Act2.class));
}
});
Button btn3 = (Button) findViewById(R.id.button3);
btn3.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
startActivity(new Intent( MainActivity.this,Act3.class));
}
});
new CountDownTimer(365 * 24 * 60 * 60, 5000) {
public void onTick(long millisUntilFinished) {
callAlertBox.showMyAlertBox();
}
public void onFinish() {
//Done
}
}.start();
}
@Override
protected void onResume() {
super.onResume();
callAlertBox.setActivity(MainActivity.this);
}
}
现在你可以从这里看到,我的倒计时计时器将在后台调用该方法,从而使对话框独立于你所处的任何活动,在我的情况下,它是主要活动,在你的情况下,可能有一些经常调用的更新方法,对吗??如果您想在ActivityB中显示数据,只需使用该类调用该方法,那么为什么要从ActivityA调用WS?ActivityB只是一个示例我有许多活动,但我可以在OneHanks中调用webservice以获得响应,但我如何确定哪个活动将调用showMyAlertBox(),因为我在一个活动上得到响应,而现在我在另一个活动上?我使用了一个来自主活动的计时器任务,它在后台调用该方法,等等,我也将使用该代码
public class MainActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button btn1 = (Button) findViewById(R.id.button1);
btn1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
startActivity(new Intent( MainActivity.this,Act1.class));
}
});
Button btn2 = (Button) findViewById(R.id.button2);
btn2.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
startActivity(new Intent( MainActivity.this,Act2.class));
}
});
Button btn3 = (Button) findViewById(R.id.button3);
btn3.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
startActivity(new Intent( MainActivity.this,Act3.class));
}
});
new CountDownTimer(365 * 24 * 60 * 60, 5000) {
public void onTick(long millisUntilFinished) {
callAlertBox.showMyAlertBox();
}
public void onFinish() {
//Done
}
}.start();
}
@Override
protected void onResume() {
super.onResume();
callAlertBox.setActivity(MainActivity.this);
}
}