2016-12-04 6 views
1

java/android Studioのクラス間の通信について質問があります。Androidクラス間の通信

私は、このようにお互いに情報を渡すの4つのクラスがあります。だから私の質問は、あるそこにこれを行うには良い方法であり、私はこのようにそれを行うべきではない理由何らかの理由がある

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(); 

} 

を?

ご協力いただきありがとうございます。

答えて

2

最初のことは、アクティビティ間で通信したい場合、通信するオプションです。 Calculateでは、実際にアクティビティ参照が必要な場合はmain2Activityの参照を渡しています。このクラスを複数の場所で使用する場合は、再利用性のためにアクティビティクラスを使用できます。私はあなたがdoSomething()で書くつもりがわからないのは、メソッドに依存しているために、クラスをより一般的にするからです。同じことがApiCallにも適用されます。

0

私は同じことを経験しているので、あなたは何をしているのか理解しています。

「クラス間のコミュニケーション」の背後にあるコンセプトは、プログラミングでは、クラス同士が決して通信しないことです。実際には、それらはアクティビティです。つまり、2つのアクティビティと2つのヘルパークラスがあります。インテントを使用しているとき、インテントは、アクティビティ間のやりとり(データの共有など)と、クラスが互いに通信しているように感じる方法です。だからあなたはインテントオブジェクトを使ってコミュニケーションを行いました。これはとても正しい方法です。問題はありません。あなたは2つのヘルパークラスを使いました。正しい方法でメソッドを書いています。運が良かった。

関連する問題