如何将多个碎片的数据发送到FAB按钮上的单个活动中?

问题描述 投票:0回答:1

我的问题是在点击 b4(fab)只有Fragment B数据在SecondActivity中得到,当点击Fragment A和Fragment B数据时,我希望同时收集Fragment A和Fragment B数据。b4片段A和片段B都有Fab按钮。

也可代替片段A数据 t4.setText(vres);,t5.setText(vres1);,t6.setText(vres2); 而总是从Fragment B中获取数据,我想让Fragment A和Fragment B的数据都在SecondActivity时被获取。b4(fab)被点击了.先谢谢你。

片段A

public class Fragment_nonveg extends Fragment {

    TextView t,t1,t2,t3,t4,t5,t6,t7,t8,t9,t10;
    CheckBox c1,c2,c3,c4,c5;
    Button b1,b2,b5,b6,b7,b8,b9,b10,b11,b12;
    ImageButton b3;
    int x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,g1,g2,g3,g4,g5,g6,g7,g8,g9,g10;
    String res,res1,res2,res3,res4,re,re1,re2,re3,re4;
    FloatingActionButton b4;


    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        Bundle bundle = this.getArguments();

        return inflater.inflate(R.layout.fragment_nonveg, null);
    }
@Override
    public void onActivityCreated(@Nullable Bundle savedInstanceState) {

        super.onActivityCreated(savedInstanceState);
        b4 = getActivity().findViewById(R.id.fab);
b4.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                Intent obj4 = new Intent(getActivity(), Bill.class);
                //obj4.putExtra("k", r1);

                int total = 0;
                String item = "", qty = "", amt = "";
                if (c1.isChecked() == true) {

                    item = item + c1.getText().toString() + "\n";
                    qty = qty + t2.getText().toString() + "\n";
                    amt = amt + t1.getText().toString() + "\n";
                    String t = t1.getText().toString();
                    total = total + Integer.parseInt(t);
                }
                if (c2.isChecked() == true) {
                    item = item + c2.getText().toString() + "\n";
                    qty = qty + t4.getText().toString() + "\n";
                    amt = amt + t3.getText().toString() + "\n";
                    String t = t3.getText().toString();
                    total = total + Integer.parseInt(t);
                }
                if (c3.isChecked() == true) {
                    item = item + c3.getText().toString() + "\n";
                    qty = qty + t6.getText().toString() + "\n";
                    amt = amt + t5.getText().toString() + "\n";
                    String t = t5.getText().toString();
                    total = total + Integer.parseInt(t);
                }
                if (c4.isChecked() == true) {
                    item = item + c4.getText().toString() + "\n";
                    qty = qty + t8.getText().toString() + "\n";
                    amt = amt + t7.getText().toString() + "\n";
                    String t = t7.getText().toString();
                    total = total + Integer.parseInt(t);

                }
                if (c5.isChecked() == true) {
                    item = item + c5.getText().toString() + "\n";
                    qty = qty + t10.getText().toString() + "\n";
                    amt = amt + t9.getText().toString() + "\n";
                    String t = t9.getText().toString();
                    total = total + Integer.parseInt(t);

                }

                int T=total;
                obj4.putExtra("key", item);
                obj4.putExtra("key2", qty);
                obj4.putExtra("key3", amt);
                obj4.putExtra("key16", T);
                getActivity().startActivity(obj4);
            }
       });

    }
}

片段B

public class Fragment_veg extends Fragment {


    FloatingActionButton b4;


    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {

        return inflater.inflate(R.layout.fragment_veg,null);
    }

    @Override
    public void onActivityCreated(@Nullable Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
b4 = getActivity().findViewById(R.id.fab);
b4.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //Do what you want
                Intent obj4 = new Intent(getActivity(), Bill.class);


                int total = 0;
                String vitem = "", vqty = "", vamt = "";
                if (vc1.isChecked() == true) {

                    vitem = vitem + vc1.getText().toString() + "\n";
                    vqty = vqty + t2.getText().toString() + "\n";
                    vamt = vamt + t1.getText().toString() + "\n";
                    String t = t1.getText().toString();
                    total = total + Integer.parseInt(t);
                }
                if (vc2.isChecked() == true) {
                    vitem = vitem + vc2.getText().toString() + "\n";
                    vqty = vqty + t4.getText().toString() + "\n";
                    vamt = vamt + t3.getText().toString() + "\n";
                    String t = t3.getText().toString();
                    total = total + Integer.parseInt(t);
                }
                if (vc3.isChecked() == true) {
                    vitem = vitem + vc3.getText().toString() + "\n";
                    vqty = vqty + t6.getText().toString() + "\n";
                    vamt = vamt + t5.getText().toString() + "\n";
                    String t = t5.getText().toString();
                    total = total + Integer.parseInt(t);
                }
                if (vc4.isChecked() == true) {
                    vitem = vitem + vc4.getText().toString() + "\n";
                    vqty = vqty + t8.getText().toString() + "\n";
                    vamt = vamt + t7.getText().toString() + "\n";
                    String t = t7.getText().toString();
                    total = total + Integer.parseInt(t);

                }
                if (vc5.isChecked() == true) {
                    vitem = vitem + vc5.getText().toString() + "\n";
                    vqty = vqty + t10.getText().toString() + "\n";
                    vamt = vamt + t9.getText().toString() + "\n";
                    String t = t9.getText().toString();
                    total = total + Integer.parseInt(t);

                }
                int vT;
                vT = total;
                obj4.putExtra("vkey", vitem);
                obj4.putExtra("vkey2", vqty);
                obj4.putExtra("vkey3", vamt);
                obj4.putExtra("vkey16", vT);
                startActivity(obj4);
            }

        });
    }

}

主要活动

public class Menu extends AppCompatActivity {

    TextView nonveg,veg,snacks,desert,beverges;
    ViewPager viewPager;
    PageViewAdapter pageViewAdapter;
    public FloatingActionButton b4;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_menu);
        nonveg=(TextView)findViewById(R.id.nonveg);
        veg=(TextView)findViewById(R.id.veg);
        snacks=(TextView)findViewById(R.id.snacks);
        desert=(TextView)findViewById(R.id.desert);
        beverges=(TextView)findViewById(R.id.beverges);
        viewPager=(ViewPager)findViewById(R.id.fragment_container);
        pageViewAdapter=new PageViewAdapter(getSupportFragmentManager());
        viewPager.setAdapter(pageViewAdapter);

        nonveg.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                viewPager.setCurrentItem(0);
            }
        });

        veg.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                viewPager.setCurrentItem(1);
            }
        });

        snacks.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                viewPager.setCurrentItem(2);
            }
        });

        desert.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                viewPager.setCurrentItem(3);
            }
        });

        beverges.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                viewPager.setCurrentItem(4);
            }
        });

        viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
            @Override
            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

            }

            @RequiresApi(api = Build.VERSION_CODES.M)
            @Override
            public void onPageSelected(int position) {
                onChangeTab(position);

            }

            @Override
            public void onPageScrollStateChanged(int state) {

            }
        });

    }

第二活动

public class Bill extends AppCompatActivity {

    TextView t,t1,t2,t3,t16,t17,t4,t5,t6;
    Button b,b1;
    static   String res,res1,res2,/*res15,*/vres,vres1,vres2/*vres15*/;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_bill);
        t = findViewById(R.id.textView);
        t1 = findViewById(R.id.textView5);
        t2 = findViewById(R.id.textView10);
        t3 = findViewById(R.id.textView15);
        t4 = findViewById(R.id.textView6);
        t5 = findViewById(R.id.textView11);
        t6 = findViewById(R.id.textView16);
        t16 = findViewById(R.id.textView20);
        t17 = findViewById(R.id.textView21);
        b = findViewById(R.id.button22);
        b1 = findViewById(R.id.button23);
        Intent obj2 = getIntent();
        res = obj2.getStringExtra("key");
        res1 = obj2.getStringExtra("key2");
        res2 = obj2.getStringExtra("key3");
        int res15 = getIntent().getIntExtra("key16",0);
        vres = obj2.getStringExtra("vkey");
        vres1 = obj2.getStringExtra("vkey2");
        vres2 = obj2.getStringExtra("vkey3");
        int vres15 = getIntent().getIntExtra("vkey16",0);
        //vres15 = obj2.getStringExtra("vkey16");
        t1.setText(res);
        t2.setText(res1);
        t3.setText(res2);
        t4.setText(vres);
        t5.setText(vres1);
        t6.setText(vres2);
        t16.setText("Total Price:");
        int total2 = res15+vres15;
        t17.setText(String.valueOf(total2));
}
}
android android-activity fragment floating-action-button multiple
1个回答
0
投票

为了在片段和活动之间传递数据,你应该声明接口,然后在片段中建立一个接口的变量,在点击按钮时调用接口的一个函数,同时在你的活动中实现这些方法,所以通过这样做,你可以通过接口函数和这些函数的参数从片段中传递任何数据到你的活动。

 interface Test{
    void onSthHappend(String str);

} 
class fragment extends Fragment{
private Test interface;
 @Override
    public void onAttach(@NonNull Context context) {
        super.onAttach(context);
        interface= (Test ) context;
    }
   fab.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
interface.onSthHappend("hi");
            }
        });
}
clas activity Extends Activity implements Test{
@override onSthHappend(String str){
//do your stuff
}
}

0
投票

本题中要求的是 sharedpreferences.

步骤1:- 在不同的片段 在Activity中,片段容器的实现是这样的:-。

public class Fragment_class_name extends Fragment {
public static int totalp;
    public static String itemp, qtyp, amtp;
    SharedPreferences sp;
    private static Fragment_nonveg instance;
@Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        Bundle bundle = this.getArguments();
        instance = this;
        return inflater.inflate(R.layout.fragment_nonveg, null);
    }
public void onActivityCreated(@Nullable Bundle savedInstanceState) {

            super.onActivityCreated(savedInstanceState);
     //do your code
}
     public static Fragment_nonveg getInstance() {
            return instance;
        }
        public void yourfuncname(){//any calculative function you want to calculate or //pass data
sp=this.getActivity().getSharedPreferences("calis", Context.MODE_PRIVATE);
            SharedPreferences.Editor editor=sp.edit();
editor.putString("key1",value1);
            editor.putString("key2",value2);
editor.commit();
        }
    }

第二步:- 然后在你的 活动 这样做:-

public class Activity_class_name extends AppCompatActivity {

   
    ViewPager viewPager;
    PageViewAdapter pageViewAdapter;
    public FloatingActionButton b4;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_menu);
        b4 = findViewById(R.id.fab);
b4.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent obj4 = new Intent(Menu.this, Bill.class);
                Fragment_class_name.getInstance().yourfuncname();
                startActivity(obj4);
            }
        });
}

第三步:- 对所有Fragment容器的Fragment做这样的处理。

© www.soinside.com 2019 - 2024. All rights reserved.