2016-12-29 14 views
0

私はwebsocketを初めて使用しています。これはUberの種類のアプリケーションです。私はソケットからデータを受信して​​います、ソケットの接続と受信機は共通のクラスですが、私はどのように最適な方法で特定のアクティビティやフラグメントのデータを渡すのか混乱しています。私の知る限り、必要なクラスで放送受信機を使用することを考えましたが、それは良い方法ではありません。複数のフラグメントとアクティビティでデータを送受信するWebソケット

答えて

0

私はそれが究極のものだとは思わないが良い解決策を見つけたが、それはBradキャスト受信機よりも速く動作する。

  1. 受信したデータを送信する方法でメインアクティビティにインターフェースを作成しました。私は主な活動からの応答を必要とするフラグメントクラスで

    public class MainActivity extends AppCompatActivity{ 
    
        SendData sendData; 
    
        @Override 
        protected void onCreate(Bundle savedInstanceState) { 
         super.onCreate(savedInstanceState); 
         setContentView(R.layout.activity_main); 
        } 
    
        public interface SendData { 
         public void sendData(String data); 
        } 
    
    } 
    
  2. 、私は主な活動の上のインタフェースを実装しました。

    public class Storage extends Fragment implements MainActivity.SendData{ 
    
        View view; 
    
        @Override 
        public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){ 
         view = inflater.inflate(R.layout.driver_info_fragment,container,false); 
         return view; 
        } 
    
        @Override 
        public void SendData(String data) { 
         String dataReceived = data; 
        } 
    
    } 
    
  3. 私が主な活動でデータを受信したとき、私は現在のフラグメントを得るだろう、私は、データがそのフラグメントに送信されるようにしたいならば、私はそのフラグメントに主な活動のインターフェイスを実装して鋳造を作成している必要がありますメインクラスIは、データを持っていると

    public class MainActivity extends AppCompatActivity{ 
    
        @Override 
        public void notifySocketMessage(final String message) { 
         if(message != null){ 
          dataPasser = // define the fragment class name where you need to send the data. 
          dataPasser.onDataPass(message); // add the message to the notifier 
         } 
        } 
    
    } 
    
値でフラグメントを通知する場合
関連する問題