2016-12-15 4 views
0

1つのアクティビティに4つのフラグメントがあります。今では、アクティビティからすべてのフラグメントにデータを送信します。インターフェイスを介して私は1つだけの断片を通信することができます、アドバイスをどうすればこれを達成することができます。アクティビティから複数のフラグメントへの通信

+0

すべてのフラグメントがアクティビティ内の変数にアクセスできるようにしますか? – MichaelStoddart

+0

共有設定が役立ちます。 –

+0

@MichaelStoddartはい – deep

答えて

1

interfaceを使用して、アクティビティからフラグメントにデータを送信することができます。

1.アクティビティからフラグメントFragmentCommunicator.javaにデータを渡すために使用されるインタフェースを作成します。

public interface FragmentCommunicator{ 
    public void passDataToFragment(Object data); 
} 

2フラグメントExampleFragment.javaという名前を定義します。

public class ExampleFragment extends Fragments implements FragmentCommunicator{ 

    //as per Android Fragment documentation an empty constructor 
    public ExampleFragment(){  
    } 

    public static ExampleFragment newInstance(){ 
     return new ExampleFragment(); 
    } 

    ... 

    //FragmentCommunicator interface implementation 
    @Override 
    public void passDataToFragment(Object data) { 
     //you will get data here from activity, here we used data to set textview. 
     textView.setText((String)data); 
    } 

} 

3.助け活動からの送信データExampleActivity.java

public class ExampleActivity extends AppCompatActivity { 

    public FragmentCommunicator fragmentCommunicator; 
    ... 

    public void sendDataToFragment(Fragment fragment, Object data){ 
     if (fragment instanceof FragmentCommunicator) { 
      fragmentCommunicator = (FragmentCommunicator) fragment; 
      fragmentCommunicator.passDataToFragment(data) 
     } 
    } 
} 

願っています!

関連する問題