2016-10-28 3 views
-1

私は非常に愚かで基本的な質問がありますが、私はそれを回避することはできません。私は3つのクラスの間でデータを渡すためにしようとしていますので、これは私が取ったアプローチです:Javaが2つのクラス間でデータを渡す

クラスA

public class GroupChat { 

    public String message; 
    public String myId; 
    public String otherID; 

    public GroupChat() { 

    } 

    public String getOtherID() { 
     return otherID; 
    } 

    public void setOtherID(String otherID) { 
     this.otherID = otherID; 
    } 

    public String getMyId() { 
     return myId; 
    } 

    public void setMyId(String myId) { 
     this.myId = myId; 
    } 

    public String getMessage() { 
     return message; 
    } 

    public void setMessage(String message) { 
     this.message = message; 
    } 
} 

クラスB - ボタン上のデータを生成し、クリックし

GroupChat chat = new GroupChat(); 
chat.setParticipants(participants); 
chat.setMyId(userId); 
chat.setOtherID(id); 
chat.setMessage(message); 

Iこれらの変数のログをGroupChatクラスに出力すると、すべてが完璧です。

しかし、getterを使用してクラスCに必要なデータを取得しようとすると、null値が返されます。

クラスC

GroupChat chat = new GroupChat(); 
chat.getMessage(), 
chat.getItemView(), 
chat.getMyId(), 
chat.getOtherID()); 

私もグループチャットクラスにデータを記録しようとしました。セッターを使用してデータを入力すると、すべてが正常ですが、ゲッターにデータを記録するとnullが返されます。変数を無効にする何かがGroupChatクラスに存在する必要があります。

誰かが正しい方向を指摘できますか? ありがとうございます。

+3

ていますか?両方の場所で 'new'を使うと、2つの異なるインスタンスを扱います。一方の値を設定しても、他方の値には影響しません。 – 0x5453

+0

私は、クラスCで値を設定するか、GroupChatオブジェクトを渡す必要があると考えています。 –

+0

ahaaaa、GroupChatの同じインスタンスを使用するにはどうすればよいですか? –

答えて

4

クラスBに作成します。

GroupChat chat = new GroupChat(); 

あなたは(デフォルト値を使用して新しいオブジェクトを作成している例:0、ヌル)。

オブジェクト "B"を使用する場合は、セッターを呼び出す関数からオブジェクトを返さなければなりません。

など。

public GroupChat getDataAfterButtonPress() { 
    GroupChat chat = new GroupChat(); 
    chat.setParticipants(participants); 
    chat.setMyId(userId); 
    chat.setOtherID(id); 
    chat.setMessage(message); 
    return chat; 
} 

次に、あなたのコード内で後でこのオブジェクトを使用することができます:あなたは `GroupChat`の同じインスタンスを使用していることを確認

GroupChat result = getDataAfterButtonPress(); 
+0

しかし、getDataAfterButtonPress()を別のクラスに渡すにはどうしたらいいですか? –

+0

これに答えるには、アーキテクチャの詳細が必要です。しかし、ユーザーがボタンを押すたびに呼び出されるListenerからGroupChatを返す/渡すだけで十分です。 – mko

0

完全なコードなしで結論するのは難しいです。私が見ることができる唯一の問題は、どちらの場合でも異なるインスタンスを使用することです。クラスCに、あなたは1を渡すのではなく、新しいグループチャットを作成するときに、あなたがするたびに呼び出す

+0

同じインスタンスを使用するにはどうしたらいいですか? –

+0

クラスCでは、コンストラクタにセッターまたはパラメータを追加します。 –

+0

新しいものを再利用しないことを確認してください。新しいClassC(existingInstance)または新しいClassC.setChat(existingInstance)を実行できます。 –

関連する問題