[英]Update main activity values from a different activity
我想在主活動視圖中更新textview。
我有一個main.xml文件,其中包含一個主應用程序屏幕,在該屏幕中,我有textview,我需要不時地從另一個活動(類)進行更新。
如果我嘗試從主要活動中更新這些值,則可以正常工作,但是當我嘗試從不同活動中進行更新時,應用程序將崩潰。
這是主要活動的方法,我需要知道如何從其他活動中調用它。
主要活動方法:
public void update_counters(){
TextView sms_textview = (TextView) findViewById(R.id.sms_textview);
sms_textview.setText(String.valueOf(sms_missed));
}
請幫忙
確實,對活動(或其他上下文)進行任何靜態引用是一種不良做法。 活動被設計為彼此獨立。
您可以從以startActivityForResult()方法啟動的活動中接收結果,然后做出適當的反應。
就像@Roman所說的那樣,從其他活動中觸摸UI內容是一種不好的做法,並且活動應該是獨立的。 您可以做的是稍微重新設計您的消息傳遞方法。 一個不錯的辦法是使用廣播接收器,它還可以保證程序的更好擴展性。
因此,每當您的“其他”活動需要調用update_counters時,它就會廣播這種意圖。 您以前的MainActivity
應該注冊以收聽該廣播,並根據需要更新UI。 最好的辦法是,您可以擁有該活動的多個實例,或者也可以注冊該廣播的其他活動。
您的主要活動只有一個實例嗎? 如果是這樣,請將對它的靜態引用存儲在主活動類中,並在onCreate中對其進行初始化。 然后有一個使用該引用來訪問實例的靜態方法:
static MainActivity TheMainActivity;
static public void update_counters()
{
TextView sms_textview = (TextView) TheMainActivity.findViewById(R.id.sms_textview); sms_textview.setText(String.valueOf(sms_missed));
}
在其他活動中:
MainActivity.update_counters();
這稱為單例。 或有時是全球性的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.