无法解决 fragmentmanager 中的方法 super() 错误 Android
Cannot resolve method super() error in fragmentmanager Android
我不是 Java 编码员,但我在尝试构建应用程序的同时尝试学习 Java。
我正在尝试添加 2 个片段,一个是登录片段,一个是注册片段,但是在使用超级构造函数时我面临无法解决错误。
谁能指出我做错了什么?
我知道 super 用于访问父 class 构造函数,在我的例子中它不是空的。
MainActivity 代码如下:
public class MainActivity extends FragmentActivity
{
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ViewPager2 viewPager = findViewById(R.id.viewPager);
AuthenticationPagerAdapter pagerAdapter = new AuthenticationPagerAdapter(getSupportFragmentManager());
pagerAdapter.addFragment(new fragment_login());
pagerAdapter.addFragment(new fragment_register());
viewPager.setAdapter(pagerAdapter);
}
public static class AuthenticationPagerAdapter extends FragmentStateAdapter
{
private ArrayList<Fragment> fragmentList = new ArrayList<>();
public AuthenticationPagerAdapter(FragmentManager fragmentActivity)
{
super(fragmentActivity);
}
public Fragment getItem(int i)
{
return fragmentList.get(i);
}
public int getCount()
{
return fragmentList.size();
}
void addFragment(Fragment fragment) {
fragmentList.add(fragment);
}
@NonNull
@Override
public Fragment createFragment(int position)
{
return null;
}
@Override
public int getItemCount()
{
return 0;
}
}
}
我认为使用 super()
作为 fragmentActivity
参数是不可能的。您应该从位于较高位置的构造函数向 super()
方法发送一个值。顺便说一下,我看不到 MainActivity
class 的构造函数。你想从哪一个 class 中获取值?
在构造函数中使用 super()
您试图调用父 class 的构造函数。
在这种情况下,FragmentStateAdapter
有 3 个构造函数:
FragmentStateAdapter(FragmentActivity fragmentActivity)
FragmentStateAdapter(Fragment fragment)
FragmentStateAdapter(FragmentManager fragmentManager, Lifecycle lifecycle)
在你的情况下你有:
public AuthenticationPagerAdapter(FragmentManager fragmentActivity)
和super(FragmentManager);
不匹配任何超级构造函数。
您可以使用类似的东西:
public AuthenticationPagerAdapter(FragmentActivity fragmentActivity) {
super(fragmentActivity);
}
public AuthenticationPagerAdapter(FragmentManager fragmentManager,Lifecycle lifecycle) {
super(fragmentManager, lifecycle);
}
我不是 Java 编码员,但我在尝试构建应用程序的同时尝试学习 Java。 我正在尝试添加 2 个片段,一个是登录片段,一个是注册片段,但是在使用超级构造函数时我面临无法解决错误。 谁能指出我做错了什么?
我知道 super 用于访问父 class 构造函数,在我的例子中它不是空的。
MainActivity 代码如下:
public class MainActivity extends FragmentActivity
{
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ViewPager2 viewPager = findViewById(R.id.viewPager);
AuthenticationPagerAdapter pagerAdapter = new AuthenticationPagerAdapter(getSupportFragmentManager());
pagerAdapter.addFragment(new fragment_login());
pagerAdapter.addFragment(new fragment_register());
viewPager.setAdapter(pagerAdapter);
}
public static class AuthenticationPagerAdapter extends FragmentStateAdapter
{
private ArrayList<Fragment> fragmentList = new ArrayList<>();
public AuthenticationPagerAdapter(FragmentManager fragmentActivity)
{
super(fragmentActivity);
}
public Fragment getItem(int i)
{
return fragmentList.get(i);
}
public int getCount()
{
return fragmentList.size();
}
void addFragment(Fragment fragment) {
fragmentList.add(fragment);
}
@NonNull
@Override
public Fragment createFragment(int position)
{
return null;
}
@Override
public int getItemCount()
{
return 0;
}
}
}
我认为使用 super()
作为 fragmentActivity
参数是不可能的。您应该从位于较高位置的构造函数向 super()
方法发送一个值。顺便说一下,我看不到 MainActivity
class 的构造函数。你想从哪一个 class 中获取值?
在构造函数中使用 super()
您试图调用父 class 的构造函数。
在这种情况下,FragmentStateAdapter
有 3 个构造函数:
FragmentStateAdapter(FragmentActivity fragmentActivity)
FragmentStateAdapter(Fragment fragment)
FragmentStateAdapter(FragmentManager fragmentManager, Lifecycle lifecycle)
在你的情况下你有:
public AuthenticationPagerAdapter(FragmentManager fragmentActivity)
和super(FragmentManager);
不匹配任何超级构造函数。
您可以使用类似的东西:
public AuthenticationPagerAdapter(FragmentActivity fragmentActivity) {
super(fragmentActivity);
}
public AuthenticationPagerAdapter(FragmentManager fragmentManager,Lifecycle lifecycle) {
super(fragmentManager, lifecycle);
}