gpt4 book ai didi

android - 如何修复尝试在空对象引用上调用接口(interface)方法

转载 作者:搜寻专家 更新时间:2023-11-01 09:20:10 24 4
gpt4 key购买 nike

我正在尝试在一个 fragment 中实现一个监听器,让我知道父 Activity 中的数据是否发生变化。

在 MainActiivty 中,我添加了这些代码行:

public ListenFromActivity activityListener;
public void setActivityListener(ListenFromActivity activityListener) {
this.activityListener = activityListener;
}

然后我在 MainActivity 的 onCreate 方法中添加了这些行:

ConnectFragment connectFragment =new ConnectFragment();

    FragmentManager fragmentManager = getSupportFragmentManager();
fragmentManager.beginTransaction().replace(R.id.content_frame,connectFragment ).commit();

// this for is used to change data for testing
for(int i=0; i<5;i++){
activityListener.doSomethingInFragment(1+"");
}

在 ConnectFragment 中,我首先添加了实现我的接口(interface):

 public class ConnectFragment extends Fragment implements ListenFromActivity

然后在 onCreate 方法中我添加了这些行:

          ((HomeActivity) getActivity()).setActivityListener(ConnectFragment.this);

然后我在我的界面中实现了这个方法

  @Override
public void doSomethingInFragment(String str) {
System.out.println(" listener from connectFragment "+ str);

}

最后这是我的界面:

   public interface ListenFromActivity {
void doSomethingInFragment(String str);
}

最佳答案

如果在MainActivity的onCreate中直接这样写for循环,它会在Fragment的onCreate中调用((HomeActivity) getActivity()).setActivityListener(ConnectFragment.this);之前执行。因此,activityListener 变量为 null,您将获得一个 null 对象引用。 fragment 事务和使用 activityListener 变量之间应该有延迟。

关于android - 如何修复尝试在空对象引用上调用接口(interface)方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56795047/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com