第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何從另一個類更新活動的TextView

如何從另一個類更新活動的TextView

翻閱古今 2019-12-27 15:41:32
我是Android / Java編程的新手。我有兩個班,一個是Activity普通班。我的活動課程包含一個TextView。我可以TextView從普通班更新活動班的嗎?我嘗試使用隨機代碼,但失敗了。// activity classpublic class MainMenu extends Activity {    public TextView txtView;    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        TextView txtView = (TextView)findViewById(R.id.text);       }}// Other classpublic class ClassB {    public ClassB() {        public void Update() {            TextView txtView = (TextView)findViewById(R.id.text);            txtView.setText("Hello");        }    }}
查看完整描述

3 回答

?
慕田峪9158850

TA貢獻(xiàn)1794條經(jīng)驗 獲得超8個贊

前兩個示例要求TextView直接在另一個類中使用。但是,在某些情況下,TextView其他類中不應(yīng)出現(xiàn),例如,您ClassB用于更新各種Activity,其中一些activity更新了TextViews,而另一些可能更新了EditTexts。


因此,下面的解決方案可以指導(dǎo)您如何將您的TextView課程與其他課程脫鉤,但是,您仍然可以實現(xiàn)所需的內(nèi)容。它使用接口方法。


首先,聲明一個接口,您可以在其中ClassB與活動進(jìn)行通信,然后調(diào)用它MyCallback:


public interface MyCallback {

    // Declaration of the template function for the interface

    public void updateMyText(String myString);

}

接下來,在Activity中,實現(xiàn)MyCallback,從而實現(xiàn)其功能定義。在此函數(shù)中,您將收到ClassB可以執(zhí)行任何操作的字符串,例如,更新TextView(或EditText等):


public class MyActivity extends AppCompatActivity implements MyCallback {

    // ... whatever code of your activity


    @Override

    public void updateMyText(String myString) {

        ((TextView)findViewById(R.id.text)).setText(myString);

    }

}

最后,您可以聲明ClassB接管MyCallback(即,您的Activity類對象也是MyCallback)。從那里,您可以用來ClassB與Activity通信,并TextView通過updateMyText功能來更新它:


public class ClassB {

    MyCallback myCallback = null;


    public ClassB(MyCallback callback) {

        this.myCallback = callback;

    }


    public void doSomething() {

        // Do something to get String

        String myString = str;


        if (myCallback != null) {

            myCallback.updateMyText(myString);

        }

    }

}

希望這有助于更好地顯示將Activity與正確解耦的體系結(jié)構(gòu)ClassB。


查看完整回答
反對 回復(fù) 2019-12-27
?
ITMISS

TA貢獻(xiàn)1871條經(jīng)驗 獲得超8個贊

您必須通過構(gòu)造函數(shù)傳遞Context引用。


public class ClassB {

   Context context;

   public ClassB(Context context){

     this.context=context;

   }


   public void Update(){

        TextView txtView = (TextView) ((Activity)context).findViewById(R.id.text);

        txtView.setText("Hello");

   }


查看完整回答
反對 回復(fù) 2019-12-27
  • 3 回答
  • 0 關(guān)注
  • 774 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號