У меня есть основной вид деятельности, которые имеют ViewPager, внутри этой ViewPager я вставил два фрагмента:Получить идентификатор от кнопки фрагмента внутри ViewPager
public class MainActivity extends AppCompatActivity {
private Toolbar toolbar;
private TabLayout tabLayout;
private ViewPager viewPager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
viewPager = (ViewPager) findViewById(R.id.viewpager);
setupViewPager(viewPager);
tabLayout = (TabLayout) findViewById(R.id.tabs);
tabLayout.setupWithViewPager(viewPager);
}
private void setupViewPager(ViewPager viewPager) {
ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager());
MyFrag f1 = new MyFrag();
MyFrag f2 = new MyFrag();
adapter.addFragment(f1, "F1");
adapter.addFragment(f2, "F2");
viewPager.setAdapter(adapter);
}
class ViewPagerAdapter extends FragmentPagerAdapter {
private final List<Fragment> mFragmentList = new ArrayList();
private final List<String> mFragmentTitleList = new ArrayList();
public ViewPagerAdapter(FragmentManager manager) {
super(manager);
}
@Override
public Fragment getItem(int position) {
return mFragmentList.get(position);
}
@Override
public int getCount() {
return mFragmentList.size();
}
public void addFragment(Fragment fragment, String title) {
mFragmentList.add(fragment);
mFragmentTitleList.add(title);
}
@Override
public CharSequence getPageTitle(int position) {
return mFragmentTitleList.get(position);
}
}
}
Тогда в MyFrag я хочу установить нажатием кнопки слушателя:
public class MyFrag extends Fragment{
public void MyFrag(){
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
final Bundle savedInstanceState) {
// Inflate the layout for this fragment
addFragment(new OtherFrag());
Button btn = (Button) container.findViewById(R.id.btn);
btn.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
addFragment(new MyOtherFrag());
}
});
return inflater.inflate(R.layout.myfrag_fragment, container, false);
}
public void addFragment(Fragment fragment){
FragmentTransaction fragmentTransaction = getChildFragmentManager().beginTransaction();
fragmentTransaction.add(R.id.fragContainer, fragment, "MyOtherFrag");
fragmentTransaction.commit();
getChildFragmentManager().executePendingTransactions();
}
проблема заключается в том Button btn = (Button) container.findViewById(R.id.btn);
является недействительным, поскольку контейнер является ViewPager вместо фрагмента ... Как я получить мой фрагмент здесь?
Какой макет имеет кнопку? Это макет деятельности? – Karakuri