java - 如何从父 Activity 访问 fragment 类中的方法?

标签 java android android-fragments

我正在实现一个数据库,因为我需要准备列表或每次进行一些更改时更新它。我在 mainActivity 之上有一个 fragment ,并且无法在 MainActivity 内执行操作所以有些操作要在MainActivity中完成和其他人在 fragment class 。 所以在扩展fragment的fragment类中有一个名为preparelist()的方法,它更新数据库并填充数据。 在我的主要 Activity 中,我使用默认的 overflow 执行删除操作。菜单项,但这里我需要调用preparelist()方法才能显示已执行的操作,或者必须关闭应用程序才能显示已执行的操作

我尝试了以下网络上的代码

MyFragment fragment= (MyFragment)getSupportFragmentManager().findFragmentById(R.id.frag);
( (MyFragment)fragment).prepareList();

但这显示错误

java.lang.NullPointerException: Attempt to invoke virtual method...on a null object reference

Basically what I want to know is how do I call the preparelist() method within my MainActivity without making any other abstract class or anything like that

最佳答案

解决方案1

Activity 调用 Fragment 的公共(public)方法:

MyFragment fragment= (MyFragment)getSupportFragmentManager().findFragmentById(R.id.frag);
if(fragment != null)
    ( (MyFragment)fragment).prepareList();
else
    Toast.makeText(this, "fragment is null", Toast.LENGTH_SHORT).show();

解决方案2

将删除功能移至您的 fragment :

  1. 将删除操作移至 fragment 中,
  2. 在您的 fragment 中写入:

    @Override
    public void onActivityCreated(Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        setHasOptionsMenu(true);        //this fragment can now override
                                    //options menu
    }
    
  3. 现在执行与您在 Activity 中相同的操作,覆盖 onCreateOptionsMenu()onOptionsItemSelected 等。请注意,方法签名与 Activity 的。请参阅Fragment文档。

关于java - 如何从父 Activity 访问 fragment 类中的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29910976/

相关文章:

android - 如何直接从我的 Android 应用程序打开 Google Play 商店?

android - fragment 已创建但在 listView 的 itemClick 上不可见。卡在这里

java - 无法在某些 fragment 上隐藏 Activity 的选项菜单

java - 如何将 .java 文件及其 mysql 数据库转换为 .exe

java - 具有嵌入式 jetty 的 Webapp 给出异常

java - 我的 ViewModel 无法在配置更改后继续存在

android - 在平板电脑上锁定横向 + 当设备处于纵向时开始 Activity = 屏幕上可见旋转

java - 使用 invokeLater 或 SwingWorker 从另一个线程更新 Swing 组件

java - Android 中的线程 UI 更新

android - Fragment 在 resume 后不响应 UI 更新和 eventbus 事件