java - Android:接口(interface)与 get 方法

标签 java android interface fragment

每个默认 fragment 都有一个界面,如下所示:

public interface OnFragmentInteractionListener
{
    void onFragmentInteraction(String string);
}

这样调用:

@Override
public void onAttach(Context context)
{
    super.onAttach(context);
    if (context instanceof OnFragmentInteractionListener)
    {
        mListener = (OnFragmentInteractionListener) context;
        mListener.onFragmentInteraction("Interfaccia fragment");
    } else
    {
        throw new RuntimeException(context.toString()
                + " must implement OnFragmentInteractionListener");
    }
}

通过接口(interface)方法的实现向 Activity 发送数据很有用:

@Override
public void onFragmentInteraction(String string)
{
    Toast.makeText(getApplicationContext(), string,Toast.LENGTH_LONG).show();
}

我也可以在 fragment 中使用 get 方法执行相同的操作

public String get()
{
    return "Interfaccia fragment";
}

Activity 以这种方式调用它:

BlankFragment blankFragment = BlankFragment.newInstance("","");  
Toast.makeText(getApplicationContext(),blankFragment.get(),Toast.LENGTH_LONG).show();

那么,如果值很少(也只有一个值),我该怎么办?用第一种方法还是第二种方法?我认为第二个更快,但第一个更完整。

最佳答案

您不想在 Activity 中维护对 fragment 的引用,因为它们可能会被销毁并重新创建。因此,请使用接口(interface),而不是 get 方法。

关于java - Android:接口(interface)与 get 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44160024/

相关文章:

java - 根据 Effective Java 返回空集合

android - 从基类获取当前 Activity 名称

java - 一个接口(interface)只能实现一个参数化——如何解决?

arrays - 保存在数组中时释放接口(interface)对象的问题

c# - 对接口(interface)和实现感到困惑

java - 用 sax 跳过节点

java - Scala SBT 和 scala-library.jar 文件包含

javascript - jQuery Mobile 禁用页面内容垂直滚动

android - 找不到符号@android :style/Theme. Holo.Light.NoActionBar

java - 如何从java中的.net SOAP Web服务获取XML响应?