2017-02-07 1 views
0

У меня есть вопрос, можно ли это сделать, когда onclick кнопку на панели инструментов и запросить сообщение еще в двух фрагментах tablayout. Например, когда я нажимаю кнопку «Тест» на моей нижней панели инструментов, еще два фрагмента текста будут запрашивать текст.Android: кнопка в панели инструментов onclick prompt message еще в двух tablayout

MainActivity

public class MainActivity extends AppCompatActivity implements TabLayout.OnTabSelectedListener{ 

private TabLayout tabLayout; 
private ViewPager viewPager; 
int ans =3; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
    setSupportActionBar(toolbar); 

    tabLayout = (TabLayout) findViewById(R.id.tabLayout); 

    BasePagerAdapter adapter = new BasePagerAdapter(getSupportFragmentManager()); 
    Tab1 tab1 = new Tab1(); 
    Tab2 tab2 = new Tab2(); 


    adapter.addFragment(tab1, "1"); 
    adapter.addFragment(tab2, "2"); 


    viewPager = (ViewPager) findViewById(R.id.pager); 

    viewPager.setAdapter(adapter); 

    tabLayout.setOnTabSelectedListener(this); 
    tabLayout.setupWithViewPager(viewPager); 
    tabLayout.setTabGravity(TabLayout.GRAVITY_FILL); 
    tabLayout.setupWithViewPager(viewPager); 

} 

@Override 
public void onTabSelected(TabLayout.Tab tab) { 
    viewPager.setCurrentItem(tab.getPosition()); 
} 

@Override 
public void onTabUnselected(TabLayout.Tab tab) { 

} 

@Override 
public void onTabReselected(TabLayout.Tab tab) { 

} 
public class BasePagerAdapter extends FragmentPagerAdapter { 
    private final List<Fragment> mFragmentList = new ArrayList<>(); 
    private final List<String> mFragmentTitleList = new ArrayList<>(); 
    public BasePagerAdapter(FragmentManager manager) { 
     super(manager); 
    } 

    @Override 
    public Fragment getItem(int position) { 
     return mFragmentList.get(position); 
    } 

    @Override 
    public int getCount() { 
     return mFragmentList.size(); 
    } 


    @Override 
    public CharSequence getPageTitle(int position) { 
     return mFragmentTitleList.get(position); 
    } 


    public void removeFragment(int position) { 
     mFragmentTitleList.remove(position); 
     mFragmentList.remove(position); 
     notifyDataSetChanged(); 

    } 
    public void addFragment(Fragment fragment, String title) { 
     mFragmentList.add(fragment); 
     mFragmentTitleList.add(title); 
    } 
    @Override 
    public int getItemPosition(Object object) { 
     return POSITION_NONE; 
    } 

} 

Tab1

public class Tab1 extends Fragment { 



EditText editext,editext2,editext3; 
Button test; 
DBController db; 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    View h = inflater.inflate(R.layout.tab1, container, false); 

    editext =(EditText)h.findViewById(R.id.editText); 
    editext2 =(EditText)h.findViewById(R.id.editText2); 
    editext3 =(EditText)h.findViewById(R.id.editText3); 



    return h; 
} 

Таб2

public class Tab2 extends Fragment { 
TextView textView2; 
@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 

    View h = inflater.inflate(R.layout.tab2, container, false); 
    textView2 = (TextView) h.findViewById(R.id.textView2); 

    return h; 
} 

ответ

0

У меня есть вопрос, можно ли это сделать, если OnClick кнопки на панели инструментов и строки сообщение в двух других фрагментах табуляции

Ответ: ДА

Как так?

хорошо, используя interface - решение. Но я предпочел бы держать классы слабо связанными и использовать EventBus, который без проблем позволяет передавать данные как событие другим классам.

Он следует за связью между публикацией и подпиской между компонентами, не требуя, чтобы компоненты явно регистрировали друг друга (и, следовательно, знали друг о друге). Он предназначен исключительно для замены традиционного распределения событий в процессе Java, используя явную регистрацию.

Чтобы увидеть использование, увидеть это Answer

+0

спасибо, есть ли простой учебник о шине событий? –

+0

Как уже упоминалось в ответе, это самый легкий, который я нашел до сих пор: http://www.andreas-schrade.de/2015/11/28/android-how-to-use-the-greenrobot-eventbus/ – OBX

+0

Поскольку это немного устарело, вам нужно будет скомпилировать последнюю версию – OBX

Смежные вопросы