显示从一个活动到另一个活动的警报

时间:2012-10-29 09:52:51

标签: android alert

我正在开发一个Android应用程序,我正在调用一个活动的web服务,每5秒在后台,现在假设他们是2个活动 活动A. 活动B

关于活动A我每隔5秒就收到一次Web服务响应,目前我已经控制了活动B,现在我想通过控制B上的活动来显示来自活动A的警报。

简而言之,我想在一页的背景中显示一些消息,显示现在的页面。

我是android的新手请建议我解决这个问题???

由于

2 个答案:

答案 0 :(得分:1)

基本上你需要发布者 - 订阅者模式。

http://docs.oracle.com/javase/tutorial/uiswing/events/propertychangelistener.html

检查链接它是我使用的最简单的发布订阅类, 概念是,活动B订阅活动A,因此,当活动A有一些属性更改时,它会触发活动B接收的propertyChange,并且将来的过程由活动B完成。

对于订阅活动A,活动B实现了PropertyChangeListener,

答案 1 :(得分:0)

我建议的解决方案就是这个

像这样创建一个名为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()方法上

@Override
protected void onResume() {
    super.onResume();
    callAlertBox.setActivity(Act1.this);
}

@Override
protected void onResume() {
    super.onResume();
    callAlertBox.setActivity(Act2.this);
}

现在你可以打电话了

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);
}
}

现在你可以从这里看到我的倒数计时器将在后台调用方法,使对话框显示独立于你所处的活动,在我的情况下,它是主要的Activity,在你的情况下,可能会有一些更新经常被称为正确的方法??只需使用该类调用方法