【问题标题】:How to transfer from one fragment to another in Android如何在 Android 中从一个片段转移到另一个片段
【发布时间】:2018-06-08 05:26:49
【问题描述】:

我想将“editText1Double”和“sum”之类的一些数据传输到另一个将使用这些数据的片段(SecondFragment)。我该怎么做?

@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    View v = inflater.inflate(R.layout.first_fragment, container, false);
    editText1 = (EditText) v.findViewById(R.id.editText1);
    editText2 = (EditText) v.findViewById(R.id.editText2);
    editText3 = (EditText) v.findViewById(R.id.editText3);
    textView = (TextView) v.findViewById(R.id.textView);


    calculateButton = (Button) v.findViewById(R.id.calculateButton);
    calculateButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            editText1Double = Double.parseDouble(editText1.getText().toString());
            editText2Double = Double.parseDouble(editText2.getText().toString());
            editText3Double = Double.parseDouble(editText3.getText().toString());

            sum = editText1Double + editText2Double + editText3Double;
        }
    });

【问题讨论】:

标签: android fragment bundle transfer


【解决方案1】:

1) 使用捆绑包:

FragmentManager fM = getActivity().getSupportFragmentManager();
FragmentTransaction fT = fM.beginTransaction();
Fragment_B fragment = new Fragment_B();//receiving fragment
Bundle bundle = new Bundle();
bundle.putDouble("key", sum);
fragment.setArguments(bundle);
fT.add(R.id.container, fragment);
fT.addToBackStack(null);
fT.commit();

并接收为

Bundle bundle = getArguments();
Double sum = bundle.getDouble("key");

2)使用构造函数:

FragmentManager fM = getActivity().getSupportFragmentManager();
FragmentTransaction fT = fM.beginTransaction();
Fragment_B fragment = new Fragment_B(sum);//receiving fragment
fT.add(R.id.container, fragment);
fT.addToBackStack(null);
fT.commit();

并接收为

public class Fragment_B extends Fragment{
private double sum;
 public Fragment_B (double sum) {
        this.sum= sum;
    }
 public Fragment_B () {

 }}

【讨论】:

    【解决方案2】:

    使用传递数据

    fragment = new HomeFragment();
                    Bundle bundle = new Bundle();
                bundle.putDouble("double", 1.1);
                    fragment.setArguments(bundle);
                    getSupportFragmentManager().beginTransaction().replace(R.id.content_frame, fragment, "HomeFragment").addToBackStack(null).commit();
    

    并使用

    在另一个片段中获取数据
    Bundle bundle = getArguments();
    double d = bundle.getDouble("double")
    

    希望它适合你。

    【讨论】:

      【解决方案3】:

      从fragment_A发送数据

      FragmentManager fM = getActivity().getSupportFragmentManager();
      FragmentTransaction fT = fM.beginTransaction();
      Fragment_B fragment = new Fragment_B();//receiving fragment
      Bundle bundle = new Bundle();
      bundle.putDouble("sum_key", sum);
      fragment.setArguments(bundle);
      fT.add(R.id.container, fragment);
      fT.addToBackStack(null);
      fT.commit();
      

      在fragment_B处接收数据

      @Override
          public View onCreateView(LayoutInflater inflater, ViewGroup container,
                                   Bundle savedInstanceState) {
          Bundle bundle = getArguments();
              Double sum = bundle.getDouble("sum_key");
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-09-30
        • 1970-01-01
        • 2022-01-05
        • 1970-01-01
        • 2014-06-06
        • 1970-01-01
        • 2017-03-25
        • 1970-01-01
        相关资源
        最近更新 更多