Android fragments 从主活动向片段发送数据不是通过意图或捆绑,而是通过android中的接口?
我的问题很简单,在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
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);
}
}
这个问题可能会被搁置,因为你没有提供任何相关的尝试或例子——现在看来,回答者必须为你做所有的工作。这也使得答案不那么准确。这个问题是负面评分-紧急行动是必要的-编辑此帖子和回复!我已经编辑好了,请现在检查一下