簡體   English   中英

更新來自其他活動的主要活動值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM