Java 用于单个视图的Android绘图应用程序需要在多视图底部导航活动应用程序中工作

Java 用于单个视图的Android绘图应用程序需要在多视图底部导航活动应用程序中工作,java,android,bottomnavigationview,Java,Android,Bottomnavigationview,我是一个全新的安卓开发人员,目前相当迷茫。当我尝试在我的应用程序中启用绘图到视图时,我遵循了这一点,这是一个的“底部导航活动”项目,具有三个选项卡或片段。请参见下面的屏幕截图: 问题在于,本教程适用于具有单个视图和单个标准MainActivity的应用程序。在本例中,以下代码用于项目的MainActivity.java类中的onCreate()方法: public class MainActivity extends AppCompatActivity { super.onCreate(sav

我是一个全新的安卓开发人员,目前相当迷茫。当我尝试在我的应用程序中启用绘图到视图时,我遵循了这一点,这是一个
的“底部导航活动”
项目,具有三个选项卡或片段。请参见下面的屏幕截图:

问题在于,本教程适用于具有单个视图和单个标准MainActivity的应用程序。在本例中,以下代码用于项目的
MainActivity.java
类中的
onCreate()
方法:

public class MainActivity extends AppCompatActivity {
super.onCreate(savedInstanceState):
PaintView paintView = new PaintView(content: this):
setContentView(paintView);
  }
}

当我构建一个单视图应用程序时,代码非常有效。没有问题。但是,在我的
“底部导航活动”
项目中,事情无法正常工作,因为片段使用的
ViewModel
类型没有提供
视图
类所急需的方法。我的应用程序有3个片段,第一个片段名为
HomeFragment
。正是在这个片段上,我希望我所有的绘画都能发生。此片段的默认
onCreateView()
方法如下所示:

public class HomeFragment extends Fragment {

private HomeView Model homeViewModel;

public View onCreateView(@NonNull LayoutInflator inflater, ViewGroup container, Bundle savedInstanceState) {

homeViewModel = ViewModelProviders.of(fragment: this).get(HomeViewModel.class);
View root = inflater.inflate(R.layout.fragment_home, container, attachToRoot: false);

return root;
 }
}
请参见下面的屏幕截图,以了解我尝试过的操作。您将看到,我在项目中添加了一个名为
PaintView
(与教程中创建的一样)的
View
类,其中包含所有图形代码

不幸的是,它会生成以下编译错误:

Inferred type com.example.mobile_testapp_android_2_ui.home.PaintView for type parameter T is not within its bound; should extend androidx.lifecycle.ViewModel
任何关于如何实现教程的PaintView类的提示,以便我可以使用其方法在“HomeFragment”上进行绘制,都将不胜感激

谢谢你,非常诚挚


Wulf

您正在尝试使用
PaintView
类创建一个
HomeViewModel
对象,这是不可能的。如果要将
PaintView
设置为
HomeFragment
的视图,则需要将其对象返回为:

    //you can return any kind of view object as you like
    public View onCreateView(@NonNull LayoutInflator inflater, ViewGroup container, Bundle savedInstanceState) {

        PaintView homeFragmentView = new PaintView(requireContext());

        // PaintView class must extends View class
        return homeFragmentView;

    }
我希望,这会有帮助



真管用!令人惊叹的!非常感谢你解除了我的封锁!我非常感激!