Android fragments 从主活动向片段发送数据不是通过意图或捆绑,而是通过android中的接口?

Android fragments 从主活动向片段发送数据不是通过意图或捆绑,而是通过android中的接口?,android-fragments,android-activity,interface,Android Fragments,Android Activity,Interface,我的问题很简单,在android中,如何通过接口将数据从主要活动发送到片段,而不是通过意图或捆绑。 请引导我,谢谢 这是我通过接口发送的从片段到活动数据的代码,但我不知道如何处理从活动到片段的代码 public interface OnRestaurantSelectedListener { public void onRestaurantSelected(String s); } MainActivity extends AppCompatActivity implement

我的问题很简单,在android中,如何通过接口将数据从主要活动发送到片段,而不是通过意图或捆绑。 请引导我,谢谢

这是我通过接口发送的从片段到活动数据的代码,但我不知道如何处理从活动到片段的代码

public interface OnRestaurantSelectedListener {
    public void onRestaurantSelected(String s);
}



  MainActivity extends AppCompatActivity implements OnRestaurantSelectedListener{
    String mPosition;
   protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

}
     @Override
        public void onRestaurantSelected(String s) {
            mPosition =s;

        }

    }
片段:

public class ListFragment extends Fragment {
    ...

    private OnRestaurantSelectedListener mOnRestaurantSelectedListener;

    @Override
    public void onAttach(Context context) {
        super.onAttach(context);
        try {
            mOnRestaurantSelectedListener = (OnRestaurantSelectedListener) context;
        } catch (ClassCastException e) {
            throw new ClassCastException(context.toString() + e.getMessage());
        }
    }

mOnRestaurantSelectedListener.onRestaurantSelected("AliResturant");


}

创建接口
FragmentCommunicator
as

public interface FragmentCommunicator{
   public void passDataToFragment(String someValue);
}
在您的主要活动中,我们可以使用接口并将数据传递给fragment。如下图所示

public class MainActivity extends FragmentActivity{
        //interface through which communication is made to fragment
        public FragmentCommunicator fragmentCommunicator;
        private Button fragmentButton;

        @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
                setContentView(R.layout.title_viewpager);
                fragmentButton = (Button)findViewById(R.id.fragmentButton);
                setUIListeners();
        }

        private void setUIListeners(){
                fragmentButton.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View arg0) {
              if(fragmentCommunicator != null)
                fragmentCommunicator.passDataToFragment("Hi from FragmentActivity");
            }
        });

       }
}
public class CustomFragment extends Fragments implements FragmentCommunicator{
      public Context context;
      private Button activityButton;
     @Override
     public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {
            View fragmentView = inflater.inflate(R.layout.activity_frag, container, false);
             activityButton =(Button)fragmentView.findViewById(R.id.activityButton);
             textView =(TextView)fragmentView.findViewById(R.id.textView);
             setRetainInstance(true);
             return fragmentView;
    }

  //FragmentCommunicator interface implementation
  @Override
  public void passDataToFragment(String someValue){
   String activityAssignedValue = someValue;
   textView.setText(activityAssignedValue); 
  }
}
访问下面这样的片段中传递的数据

public class MainActivity extends FragmentActivity{
        //interface through which communication is made to fragment
        public FragmentCommunicator fragmentCommunicator;
        private Button fragmentButton;

        @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
                setContentView(R.layout.title_viewpager);
                fragmentButton = (Button)findViewById(R.id.fragmentButton);
                setUIListeners();
        }

        private void setUIListeners(){
                fragmentButton.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View arg0) {
              if(fragmentCommunicator != null)
                fragmentCommunicator.passDataToFragment("Hi from FragmentActivity");
            }
        });

       }
}
public class CustomFragment extends Fragments implements FragmentCommunicator{
      public Context context;
      private Button activityButton;
     @Override
     public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {
            View fragmentView = inflater.inflate(R.layout.activity_frag, container, false);
             activityButton =(Button)fragmentView.findViewById(R.id.activityButton);
             textView =(TextView)fragmentView.findViewById(R.id.textView);
             setRetainInstance(true);
             return fragmentView;
    }

  //FragmentCommunicator interface implementation
  @Override
  public void passDataToFragment(String someValue){
   String activityAssignedValue = someValue;
   textView.setText(activityAssignedValue); 
  }
}

这个问题可能会被搁置,因为你没有提供任何相关的尝试或例子——现在看来,回答者必须为你做所有的工作。这也使得答案不那么准确。这个问题是负面评分-紧急行动是必要的-编辑此帖子和回复!我已经编辑好了,请现在检查一下