【问题标题】:Inner fragments communication implementation;内部片段通信实现;
【发布时间】:2016-01-11 21:24:01
【问题描述】:

我正在开发一个需要在片段之间传输一些数据的应用程序,并偶然发现了两个版本。
以下是实现监听器的非常相似的版本。你认为哪一个更适合片段之间的通信?或者也许其他一些实现?另一个问题是:是否需要另一个接口通过 MainAvtivity 将数据从第二个片段发送回第一个片段,或者是否有更简单的方法?

谢谢

第一:

class FragOne extends ListFragment
             {     
              ListenerInterface listener;

      public void onAttach(Content content)
            {
              try{
                  listener = (ListenerInterface).content;
                  }catch ClassCastException..
               super.onAttach(content);
            }
                 ...
       public void OnListItemClick(ListView, View,position,id)
            {
             listener.doSmth(someData);
            }

       public interface ListenerInterface
            {
              public void doSmth(someData);
            }

      }
class MainActivity extends Activity implements FragOne.ListInterface
{
    ....

 public void doSmth(someData)
    {
       //sending data to second fragment
    }
}

或者第二个:

class FragOne extends ListFragment
      {     
      ListenerInterface listener;

            ...
       public void OnListItemClick(ListView, View,position,id)
            {
             listener.doSmth(someData);
            }

       public void assignListener(Activity activity)
              {
                this.listener=(ListenerInterface)activity;

              }
       public interface ListenerInterface
            {
               public void doSmth(someData);
            }

      }
class MainActivity extends Activity implements FragOne.ListInterface
{
    ....
    public void onCreate(Bundle s)
          }
            FragOne fragOne = new FragOne();
            FragmentManager fm=getSupportFragmentmentManager...       
             ...
             ...commit();
            fragOne.assignListener(this);
          }

   public void doSmth(someData)
    {
       //sending data to second fragment
    }
}

【问题讨论】:

    标签: android android-fragments interface


    【解决方案1】:

    我个人会推荐第一个,只是因为 onAttach 中的代码。创建一个函数只是为了调用该部分似乎很荒谬,而且很容易忘记您必须先调用该函数才能使用您的界面(尤其是对于新手而言)。你会得到 NullPointerException。

    第一种方法很好,只要 FragOne 是唯一使用该接口的方法。否则,在 java 类中创建一个单独的接口,其他片段也可以以类似的方式使用。

    您可以在一个接口中定义多个方法,并且多个片段可以使用接口中的部分或全部方法。但请记住,一个接口一次只能被一个片段访问。一个片段可以访问多个接口。

    【讨论】:

    • 感谢@suku 回答问题。
    • 不客气,罗曼。你能把答案标记为正确吗?
    猜你喜欢
    • 1970-01-01
    • 2021-12-11
    • 2023-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多