java - 如何注册和引用回调接口(interface)?

标签 java android

当我需要从 Activity B 回调到 Activity A 时,我通常将 Activity 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;
    }

    }

最佳答案

您永远不需要在两个 Activity 之间进行回调。如果你这样做了,你就做错了。如果需要将数据从A传递到B,则将其传递到bundle中。如果需要将其从 B 传回 A,请使用 startActivityForResult 并将其传递到结果中。如果您需要在许多 Activity 之间共享数据,则应将其保存在某种全局可访问的数据结构中,无论是在内存中还是在磁盘上。

关于java - 如何注册和引用回调接口(interface)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44936656/

相关文章:

android - 单击时更改工具栏中的图标

android-如何使按钮背景不透明

android - 我可以使用二维码调用自定义应用程序吗?

Android通知,振动但没有声音

java 。如何使用私有(private)构造函数覆盖类中的方法

java - 运行 Web 应用程序时出现错误 "HTTP Status 404"-"The requested resource is not available"?

java - 有没有一种方法可以将多个变量添加到一个对象?

java - 如何将百分比转换为数字范围?

java - 带有空格的长度的正则表达式

安卓图形 View : setMinX(0) not working and produces negative x axis values