簡體   English   中英

如何注冊和引用回調接口?

[英]How to register and reference callback interface?

當我需要從活動B回調回活動AI時,通常將活動B中的引用變量設為“靜態”。 我意識到,如果用戶旋轉設備,則生命周期方法將刪除我的引用。

這是唯一的缺點嗎?還有沒有靜態引用的更好的注冊方法。 將所有數據簡單地放在Application類中會更好嗎? - 謝謝。

    public class MainActivity extends Activity implements InterfaceMainActivityTwo {
    static Main2Activity main2Activity;

    @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);

            main2Activity = new Main2Activity();
            main2Activity.setDataListener(this);
    }


        @Override
        public void getDataMainActivityTwo(String string) {
            tvTextData.setText(string);
        }

    }


    public class Main2Activity extends Activity {

        static InterfaceMainActivityTwo mGetDataInterface;

     @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main2);
    }

        public void getDataSaveBtn(View v) {

            if (mGetDataInterface != null)
                mGetDataInterface.getDataMainActivityTwo(fullName);
            else
                Toast.makeText(this, "IS NULL.INTERFACE NOT INITIALIZED !!!!", Toast.LENGTH_SHORT).show();
    }

    /////////// interface setup
   interface InterfaceMainActivityTwo  {
        void getDataMainActivityTwo(String string);
    }

    public void setDataListener(InterfaceMainActivityTwo  listener) {
        this.mGetDataInterface = listener;
    }

    }

您永遠都不需要在兩個活動之間進行回調。 如果您做錯了,那您做錯了。 如果需要將數據從A傳遞到B,請在捆綁包中傳遞數據。 如果需要將其從B傳遞回A,請使用startActivityForResult並將其傳遞給結果。 如果需要在許多活動之間共享數據,則應將其保存在內存或磁盤上的某些可全局訪問的數據結構中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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