[英]Android: Updating textviews in multiple activities
我需要一些關於執行以下操作的指示:
所以到目前為止我所做的是:
現在我被困在我接下來應該做什么上。 任何指針將不勝感激,謝謝。
編輯:我需要一種從 run 方法內部通信到當前屏幕上的任何活動的方法,以更新其文本視圖。
這里只是一些標准Object Oriented Programming
的理論:堅持推薦的原則,比如松耦合,這可以減少你的項目代碼相互之間的聯系。 您可以稍后閱讀更多相關內容。
現在,使用Events
,您可以設置一個與自然Publisher/Subscriber
設計模式同義的系統。 像這樣:
這需要在活動notify
的其他活動,被稱為Publisher
和其他活動,需要被notified
被稱為Subscribers
。
從這里:
已經有構建和測試的庫來在 android 中執行事件。 就像我最喜歡的EventBus
。
步驟 1將此行添加到您的app-level build.gradle
文件中:
compile 'org.greenrobot:eventbus:3.0.0'
然后創建一個簡單的Plain Old Java Object
aka POJO
類,如下所示:
public class UpdateTextViewEvent{
private String textToShow;
public UpdateTextViewEvent(String text){
this.textToShow = text;
}
//add your public getters and setters here
}
步驟 2通知他人:
當您想將更改通知任何人時,您只需調用此方法:
EventBus.getDefault().post(new UpdateTextViewEvent("Some new Text"));
步驟 3接收通知
對於那些想要收到此事件通知的人,只需執行以下操作:
@Override
public void onStart() {
super.onStart();
EventBus.getDefault().register(this);
}
@Override
public void onStop() {
super.onStop();
EventBus.getDefault().unregister(this);
}
注意:要實際處理事件:
@Subscribe
public void onEvent(UpdateTextViewEvent event){
String text = event.getTextToShow();
//now you can show by setting accordingly on the TextView;
}
這更容易做到,通過消除不同活動中的static
引用來解耦代碼
我希望這有幫助! 祝你好運!
使該 Textview 在第二類中作為
public static Textview text;
並在主要活動中將其稱為
SecondActivity obj=new SecondActivity();
obj.text.settext("");
您可以創建另一個活動,例如 BaseActivity 使用 Activity 類擴展,並且您的所有 10/20 活動都使用創建的 BaseActivity 類擴展。
您可以將 textview 與protected
訪問說明符一起使用。
您需要做的是在計數器類中,創建一個方法並傳入一個TextView
作為參數。 然后創建一個 int 變量並將計數器設置為實例:
像這樣
public static class Counter extends Thread{
private static int x;
@Override
public void run(){
x = counter;
}
public void setCounter(TextView tv){
tv.setText(String.valueOf(x));
}
}
現在,在您希望顯示計數器的所有活動的onCreate()
方法中調用此方法setCounter(TextView)
,並將布局 TextView 作為參數傳遞。 像這樣
...
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState):
....
TextView cTextView = (TextView)findViewById(R.id.texT1);
Counter c = new Counter();
c.setCounter(cTextView);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.