2017-02-23 6 views
0

私は、Bluetoothデバイスに接続して、Bluetoothデバイスからデータを取得し、そのデータをフラグメントに送信したいのですが、私がフラグメントを開始するときにフラグメントを取得するドロワは、フラグメントが作成されたときにデータを送信し、その後にフラグメントを作成する方法を送信しません。フラグメントを再作成せずにこれらの変更から自分のフラグメントを通知する必要があります

彼女は私がフラグメントおよびフラグメントここ

@Override 
public boolean onNavigationItemSelected(MenuItem item) { 
    // Handle navigation view item clicks here. 
    int id = item.getItemId(); 
    FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction(); 
    switch (id) { 

     case R.id.nav_car: 
      backgroundImageView.setVisibility(View.INVISIBLE); 
      //setup the car fragment 
      carFragment = new CarFragment(); 
      fragmentTransaction.replace(R.id.fragment_container, carFragment); 
      fragmentTransaction.commit(); 
      carFragment.sendData(recDataString.toString()); 
      break; 
    } 

にデータを送信するには、インターフェイス

ですここ
public interface sendToDataToFragment { 
    void sendData(String data); 
} 

このフラグメントコード

public class CarFragment extends Fragment implements MainActivity.sendToDataToFragment { 


private static final String LOG_TAG = CarFragment.class.getSimpleName(); 

public CarFragment() { 
} 


@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 


    //address= getArguments().getString(EXTRA_DEVICE_ADDRESS); 
    View rootView = inflater.inflate(R.layout.fragment_car, container, false); 

    // Inflate the layout for this fragment 
    return rootView; 
} 

@Override 
public void sendData(String data) { 
    if (data != null) 
    { 
     Log.e(LOG_TAG,data); 
    } 
} 

}

私はフラグメントに、このデータを、このデータを送信したいのBluetoothからデータを取得するコードは常に

を変更されています
bluetoothHandler = new Handler() { 
     public void handleMessage(android.os.Message msg) { 
      //if message is what we want 
      if (msg.what == handlerState) { 
       // msg.arg1 = bytes from connect thread 
       String readMessage = (String) msg.obj; 

       //keep appending to string until ~ char 
       recDataString.append(readMessage); 



      } 
     } 
    }; 

enter code here 
+0

チェックこの[解答](http://stackoverflow.com/a/25392549/5993410)[フラグメント間の通信の –

+0

可能な複製と: は、現在お使いのフラグメントコンテナのコー​​ルに表示フラグメントへの参照を取得するには(http://stackoverflow.com/questions/14247954/communicating-between-a-fragment-and-anactivity-best-practices) –

+0

私は、ウル活動がウル断片のコンテナであると考えます。もしそれが本当であれば、あなたが更新しようとしているデータでurフラグメントのpublic/protected(同じパッケージにあれば)メソッドを作成し、urアクティビティで呼び出すのはとても簡単です。 – Catluc

答えて

0

現在のフラグメントでsendData(String data)と電話するだけです。

sendToDataToFragment fragment = (sendToDataToFragment)getSupportFragmentManager().findFragmentById(R.id.fragmentContainer); 
fragment.sendData(data); 
+0

データがこのコードの主なアクティビティに入ります –

+0

'bluetoothHandler = new Handler(){ public void handleMessage(android.os.Message msg){ //メッセージが必要な場合 if(msg.what == handlerState){ // msg.arg1 =接続スレッドからのバイト String readMessage =(String)msg。 obj; //〜charまで文字列に追加したままにする recDataString.append(readMessage); } } }; ' –

+0

更新quetion –

関連する問題