我有有ViewPager主要活动里面,这ViewPager里面我插两个片段:获得来自片段的按钮ID的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