私は3つのタブフラグメントTAB1、TAB2、およびTAB3を持っています。 TAB1では、クリックするとインターフェイスを使用してTAB2およびTAB3にデータを送信し、それぞれのフラグメントのtextViewにデータを表示する必要があります。タブフラグメントボタンクリックすると複数のタブにデータが送信されますフラグメント
// interface codes
public interface IFragmentToActivity {
void Tab1ToTab2(String value);
}
// in activity
@Override
public void Tab1ToTab2(String value) {
TabFragment2 fragment = (TabFragment2) adapter.getFragment(1);
if (fragment != null) {
fragment.fragmentCommunicationFragment(value);
} else {
// Log.i(LOG_TAG, "Fragment 2 is not initialized");
}
}
/// in TAB1 i send data
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.button2:
mCallback.FragmentToFragment("hi from tab 1");
break;
}
}
の下にどのように私はそれがすべてのフラグメントのために働くことができますようにこれまでのところ私は、TAB1からTAB2に送信するために管理していますか?これは私がTAB2と3
インターフェースコード
public interface IFragmentToActivity {
void Tab1ToTab2(String value);
void Tab1ToTab3(String value);
}
TAB1が
@Override
public void Tab1ToTab2(String value) {
TabFragment2 fragment = (TabFragment2) adapter.getFragment(1);
if (fragment != null) {
fragment.fragmentCommunicationFragment(value);
} else {
// Log.i(LOG_TAG, "Fragment 2 is not initialized");
}
}
@Override
public void Tab1ToTab3(String value) {
TabFragment3 fragment = (TabFragment3) adapter.getFragment(1);
if (fragment != null) {
fragment.FromFragmentOne(value);
}
else {
// Log.i(LOG_TAG, "Fragment 3 is not initialized");
}
}
を受信するデータを主な活動で
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.button2:
mCallback.Tab1ToTab2("hi from tab 1");
mCallback.Tab1ToTab3(hi from tab 1");
break;
}
コードを送信するために送信する場合、私が試したものです
/// TAB 2メソッド受信データ
public void fragmentCommunicationFragment(String value){
mTextView1.setText(value);
}
/// TAB 3の方法は、あなたの第2のフラグメントとTabFragment3をinstanciatingしているあなたのTab1ToTab3方法で
public void FromFragmentOne(String kabila){
mTextView1.setText(kabila);
}
//アダプタ
public class PagerAdapter extends FragmentStatePagerAdapter {
private final SparseArray<WeakReference<Fragment>> instantiatedFragments = new SparseArray<>();
private ArrayList<String> mTabHeader;
int mNumOfTabs;
public PagerAdapter(FragmentManager fm, int NumOfTabs) {
super(fm);
this.mNumOfTabs = NumOfTabs;
}
@Override
public Fragment getItem(int position) {
switch (position) {
case 0:
TabFragment1 tab1 = new TabFragment1();
return tab1;
case 1:
TabFragment2 tab2 = new TabFragment2();
return tab2;
case 2:
TabFragment3 tab3 = new TabFragment3();
return tab3;
case 3:
TabFragment4 tab4 = new TabFragment4();
return tab4;
default:
return null;
}
}
私はあなたがsetArgument()とgetArgument()を使用する必要があると思います。 –
ありがとう@AniruddhParihar私はあなたがそのコンセプトのサンプルコードを教えていただけますか? – f2k
私はコードを投稿しました。それを確認してください。 –