从 FragmentStatePagerAdapter 调用方法
call a method from FragmentStatePagerAdapter
我正在尝试从 FragmentStatePagerAdapter 调用一个方法来添加和删除选项卡。
public class TabPagerAdapter extends FragmentStatePagerAdapter {
public void removeTab(int position) {
new MainActivity().tabLayout.removeTabAt(1);
notifyDataSetChanged();
}
}
现在主要 activity 我想调用它以便我可以删除 ActivityResult 上的标签
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
//this gives error
new TabPagerAdapter().removeTab(1);
}
你能帮我解决这个问题吗?谢谢。
您的 MainActivity 应该有一个 FragmentStatePagerAdapter 的实例。您可以像您一样在 FragmentStatePagerAdapter 中放置一个方法,但它应该调整您的 getItem() 函数并且不需要 MainActivity 的实例。然后在您的 MainActivity 中,您可以使用点语法来调用您在 FragmentStatePagerAdapter 实例上创建的方法。
public class MainActivity extends AppCompatActivity {
private TabPagerAdapter tabPagerAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
...
tabPagerAdapter = new TabPagerAdapter
}
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
tabPagerAdapter.removeTab(1);
}
}
public class TabPagerAdapter extends FragmentStatePagerAdapter {
public void removeTab(int position) {
// adjust your FragmentStatePagerAdapter however you see fit.
}
}
我正在尝试从 FragmentStatePagerAdapter 调用一个方法来添加和删除选项卡。
public class TabPagerAdapter extends FragmentStatePagerAdapter {
public void removeTab(int position) {
new MainActivity().tabLayout.removeTabAt(1);
notifyDataSetChanged();
}
}
现在主要 activity 我想调用它以便我可以删除 ActivityResult 上的标签
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
//this gives error
new TabPagerAdapter().removeTab(1);
}
你能帮我解决这个问题吗?谢谢。
您的 MainActivity 应该有一个 FragmentStatePagerAdapter 的实例。您可以像您一样在 FragmentStatePagerAdapter 中放置一个方法,但它应该调整您的 getItem() 函数并且不需要 MainActivity 的实例。然后在您的 MainActivity 中,您可以使用点语法来调用您在 FragmentStatePagerAdapter 实例上创建的方法。
public class MainActivity extends AppCompatActivity {
private TabPagerAdapter tabPagerAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
...
tabPagerAdapter = new TabPagerAdapter
}
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
tabPagerAdapter.removeTab(1);
}
}
public class TabPagerAdapter extends FragmentStatePagerAdapter {
public void removeTab(int position) {
// adjust your FragmentStatePagerAdapter however you see fit.
}
}