2012-10-29 73 views
0

我開發一個Android應用程序,並在我上一個活動調用Web服務,每5秒中的背景和現在假設他們是2個活動 活性的 活動B顯示警惕另一個活動

活動上的

我每5秒獲得一次網絡服務響應,目前我的控制權在活動B上,現在我想通過保持對活動B的控制來顯示活動A的警報。

總之我要顯示一些信息在一頁的背景中傳到我現在的頁面。

我是新來的機器人,請建議我一些解決這個問題?

謝謝

+0

什麼是混淆? –

+0

小混亂 – koti

+1

如果你想在ActivityB中顯示數據,那麼爲什麼你從ActivityA調用WS? –

回答

1

基本上你需要發佈者 - 用戶模式。

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

檢查鏈接它是我用最簡單的發佈訂閱類, 的概念,活動B訂閱到活動A,所以當活動A具有一定特性的變化,然後它觸發了的propertyChange這是通過活動B接收,並且未來的過程是由活動B.

做用於訂閱活動A,活性B實現的PropertyChangeListener,

+0

致電webservice感謝您理解我:)我會嘗試... –

0

一旦解決方案,我建議是本

在每一個可能把這個警告框位置的代碼在其活動的onResume()方法創建一個名爲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(); 
} 
} 

現在

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

現在你可以從這裏看到我的倒數計時器會調用該方法在後臺casuing對話框出現獨立於以往活動,您的在我的情況下,這是主要的活動,在你的情況下,可能會有一些更新方法,經常被稱爲是嗎?只用那個類來調用方法

+0

感謝您的迴應,但我會如何決定哪個活動將調用showMyAlertBox(),因爲我正在接受一項活動的回覆,現在我正在進行其他一些活動? –

+0

我使用了主Activity中的計時器任務,並在後臺調用該方法,請等待我的代碼 –

相關問題