Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android类间通信_Java_Android_Class_Android Intent_Communication - Fatal编程技术网

Java Android类间通信

Java Android类间通信,java,android,class,android-intent,communication,Java,Android,Class,Android Intent,Communication,我有一个关于java/android Studio中类之间通信的问题 我有四个类以这种方式相互传递信息: MainActivity{ Intent intent = new Intent (this, Main2Activity.class); intent.putStringArrayListExtra("addressesList", addressList); startActivity(intent); } Main2Activity{ priva

我有一个关于java/android Studio中类之间通信的问题

我有四个类以这种方式相互传递信息:

MainActivity{

    Intent intent = new Intent (this, Main2Activity.class);
    intent.putStringArrayListExtra("addressesList", addressList);
    startActivity(intent);

}

Main2Activity{

    private ArrayList addressList = new ArrayList();
    addressList = getIntent().getStringArrayListExtra("addressesList");

    Calculate calulate = new Calculate(this);
    calulate.getTravelInformation();

}

Calculate{

    private ApiCall apiCall = new ApiCall(this);

    private ArrayList addressesList = new ArrayList();    

    private Main2Activity activity;

    public Calculate (Main2Activity a){
       activity = a;
       addressesList = activity.addressList;
    }

    protected void doSomething(){
    }

}

ApiCall{

    private Calculate calculate;

    protected ApiCall(Calculate a){
        calculate = a;
    }

    calculate.doSomething();

}
所以我的问题是,有没有更好的方法来做这件事,有没有什么理由我不应该这样做


提前感谢您的帮助。

如果您想在活动之间进行沟通,首先可以选择沟通的目的。
Calculate
中,您正在传递一个
main2Activity
引用。如果您确实需要活动引用,您可以使用活动类进行重用,以防在多个地方使用该类。我不知道您将在
doSomething()
中编写什么,因为依赖于方法,类会变得更通用。这同样适用于
ApiCall
。由于您正在创建类之间的循环依赖关系,因此我理解您所经历的,正如我所经历的一样。让我们从一些概念开始:

“类间通信”语句背后的概念是,在编程中,类从不相互通信,实际上它们是活动。因此,您有两个活动和两个助手类。当您使用Intent时,是的Intent是一种在活动之间进行通信(如共享数据等)的方式,我们感觉类正在相互通信。所以您使用了Intent对象进行通信,这是非常正确的方法,没问题,您现在正在进行,您已经使用了两个helper类,并且您正在以正确的方式编写方法。祝你好运