Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/206.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何将两个不同片段中的整数添加到一个片段中_Android_Android Fragments_Android Studio 2.3 - Fatal编程技术网

Android 如何将两个不同片段中的整数添加到一个片段中

Android 如何将两个不同片段中的整数添加到一个片段中,android,android-fragments,android-studio-2.3,Android,Android Fragments,Android Studio 2.3,我刚刚进入安卓工作室,我有这个问题。在我的Tab1(第一个片段)中,我有一些复选框,当您选择时,它将向Total(我发送所有值的片段)中添加一个值,并且工作正常 然后,当我在Tab2(第二个片段)中选中一个复选框时,该值将不会添加。简言之,每个片段都有其总价值 现在我怎样才能全部加上呢 这是我的表1: public class Tab1 extends android.support.v7.app.AppCompatDialogFragment implements View.OnClick

我刚刚进入安卓工作室,我有这个问题。在我的Tab1(第一个片段)中,我有一些复选框,当您选择时,它将向Total(我发送所有值的片段)中添加一个值,并且工作正常

然后,当我在Tab2(第二个片段)中选中一个复选框时,该值将不会添加。简言之,每个片段都有其总价值

现在我怎样才能全部加上呢

这是我的表1:

public class Tab1 extends android.support.v7.app.AppCompatDialogFragment implements View.OnClickListener {
    CheckBox mc1,mc2,mc3,mc4,mc5,mc6,mc7,mc8,mc9,mc10,mc11,mc12;
    communicator comm;
    int total;

    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) {
        return inflater.inflate(R.layout.tab1, container, false);

    }

    @Override
    public void onActivityCreated(@Nullable Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        comm=(communicator)getActivity();
        mc1=(CheckBox)getActivity().findViewById(R.id.mc1);
        mc1.setOnClickListener(this);
        mc2=(CheckBox)getActivity().findViewById(R.id.mc2);
        mc2.setOnClickListener(this);
        mc3=(CheckBox)getActivity().findViewById(R.id.mc3);
        mc3.setOnClickListener(this);
        mc4=(CheckBox)getActivity().findViewById(R.id.mc4);
        mc4.setOnClickListener(this);
        mc5=(CheckBox)getActivity().findViewById(R.id.mc5);
        mc5.setOnClickListener(this);
        mc6=(CheckBox)getActivity().findViewById(R.id.mc6);
        mc6.setOnClickListener(this);
        mc7=(CheckBox)getActivity().findViewById(R.id.mc7);
        mc7.setOnClickListener(this);
        mc8=(CheckBox)getActivity().findViewById(R.id.mc8);
        mc8.setOnClickListener(this);
        mc9=(CheckBox)getActivity().findViewById(R.id.mc9);
        mc9.setOnClickListener(this);
        mc10=(CheckBox)getActivity().findViewById(R.id.mc10);
        mc10.setOnClickListener(this);
        mc11=(CheckBox)getActivity().findViewById(R.id.mc11);
        mc11.setOnClickListener(this);
        mc12=(CheckBox)getActivity().findViewById(R.id.mc12);
        mc12.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        boolean checked = ((CheckBox) v).isChecked();
        switch (v.getId()){
            case R.id.mc1:
                if(checked){
                    total=total+400;
                    comm.respond("Total:\n"+total+" Php.");
                }
                else{
                    total=total-400;
                    comm.respond("Total:\n"+total+" Php.");
                }
                break;
            case R.id.mc2:
                if(checked){
                    total=total+250;
                    comm.respond("Total:\n"+total+" Php.");
                }
                else{
                    total=total-250;
                    comm.respond("Total:\n"+total+" Php.");
                }
                break;
            case R.id.mc3:
                if(checked){
                    total=total+350;
                    comm.respond("Total:\n"+total+" Php.");
                }
                else{
                    total=total-350;
                    comm.respond("Total:\n"+total+" Php.");
                }
                break;
            case R.id.mc4:
                if(checked){
                    total=total+400;
                    comm.respond("Total:\n"+total+" Php.");
                }
                else{
                    total=total-400;
                    comm.respond("Total:\n"+total+" Php.");
                }
                break;
            case R.id.mc5:
                if(checked){
                    total=total+250;
                    comm.respond("Total:\n"+total+" Php.");
                }
                else{
                    total=total-250;
                    comm.respond("Total:\n"+total+" Php.");
                }
                break;
            case R.id.mc6:
                if(checked){
                    total=total+250;
                    comm.respond("Total:\n"+total+" Php.");
                }
                else{
                    total=total-250;
                    comm.respond("Total:\n"+total+" Php.");
                }
                break;
            case R.id.mc7:
                if(checked){
                    total=total+250;
                    comm.respond("Total:\n"+total+" Php.");
                }
                else{
                    total=total-250;
                    comm.respond("Total:\n"+total+" Php.");
                }
                break;
            case R.id.mc8:
                if(checked){
                    total=total+200;
                    comm.respond("Total:\n"+total+" Php.");
                }
                else{
                    total=total-200;
                    comm.respond("Total:\n"+total+" Php.");
                }
                break;
            case R.id.mc9:
                if(checked){
                    total=total+150;
                    comm.respond("Total:\n"+total+" Php.");
                }
                else{
                    total=total-150;
                    comm.respond("Total:\n"+total+" Php.");
                }
                break;
            case R.id.mc10:
                if(checked){
                    total=total+150;
                    comm.respond("Total:\n"+total+" Php.");
                }
                else{
                    total=total-150;
                    comm.respond("Total:\n"+total+" Php.");
                }
                break;
            case R.id.mc11:
                if(checked){
                    total=total+450;
                    comm.respond("Total:\n"+total+" Php.");
                }
                else{
                    total=total-450;
                    comm.respond("Total:\n"+total+" Php.");
                }
                break;
            case R.id.mc12:
                if(checked){
                    total=total+550;
                    comm.respond("Total:\n"+total+" Php.");
                }
                else{
                    total=total-550;
                    comm.respond("Total:\n"+total+" Php.");
                }
                break;
        }
    }
}
这是我的表2:

public class Tab2 extends android.support.v7.app.AppCompatDialogFragment implements View.OnClickListener{
    CheckBox aoc1,aoc2,aoc3,aoc4;
    communicator comm;
    int total;
    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) {
        return inflater.inflate(R.layout.tab2,container,false);
    }

    @Override
    public void onActivityCreated(@Nullable Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        comm=(communicator)getActivity();
        aoc1=(CheckBox)getActivity().findViewById(R.id.aoc1);
        aoc1.setOnClickListener(this);
        aoc2=(CheckBox)getActivity().findViewById(R.id.aoc2);
        aoc2.setOnClickListener(this);
        aoc3=(CheckBox)getActivity().findViewById(R.id.aoc3);
        aoc3.setOnClickListener(this);
        aoc4=(CheckBox)getActivity().findViewById(R.id.aoc4);
        aoc4.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        boolean checked = ((CheckBox) v).isChecked();
        switch (v.getId()) {
            case R.id.aoc1:
                if (checked) {
                    total = total + 50;
                    comm.respond("Total:\n" + total + " Php.");
                } else {
                    total = total - 50;
                    comm.respond("Total:\n" + total + " Php.");
                }
                break;
            case R.id.aoc2:
                if (checked) {
                    total = total + 100;
                    comm.respond("Total:\n" + total + " Php.");
                } else {
                    total = total - 100;
                    comm.respond("Total:\n" + total + " Php.");
                }
                break;
            case R.id.aoc3:
                if (checked) {
                    total = total + 100;
                    comm.respond("Total:\n" + total + " Php.");
                } else {
                    total = total - 100;
                    comm.respond("Total:\n" + total + " Php.");
                }
                break;
            case R.id.aoc4:
                if (checked) {
                    total = total + 150;
                    comm.respond("Total:\n" + total + " Php.");
                } else {
                    total = total - 150;
                    comm.respond("Total:\n" + total + " Php.");
                }
                break;
        }
    }
}
这是我的总数:

public class Total extends Fragment {
    TextView ttl;

    public Total() {
    }


    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        return inflater.inflate(R.layout.total, container, false);
    }
    @Override
    public void onActivityCreated(@Nullable Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        ttl= (TextView) getActivity().findViewById(R.id.total);
    }

}
这是我在我的
main活动中的
response

@Override
    public void respond(String data) {
        ttl.setText(data);
    }

注意:我的总片段在我的activity_main中,这就是为什么它只是浮动的,所以当我更改tab时它不会移动。

这是因为您在两个选项卡中分别创建
int-Total
。您应该保持它的通用性。。 做这样的事

public Class CommonTotal{

private int total = 0;

   public int getTotal() {
      return total;
   } 
   public void setTotal(int total) {
      this.total = this.total + total ;
   }
}
创建CommonTotal的对象

CommonTotal commonTotal = new CommonTotal();
并在两个选项卡中引用它,而不是
int total
而不是像这样做

case R.id.aoc1:
                if (checked) {
                    total = total + 50;
                    comm.respond("Total:\n" + total + " Php.");
                } else {
                    total = total - 50;
                    comm.respond("Total:\n" + total + " Php.");
                }
                break;
做这样的事

case R.id.aoc1:
                if (checked) {
                    commonTotal.setTotal(50);//
                    //total = total + 50;
                    comm.respond("Total:\n" + total + " Php.");
                } else {
                    total = total - 50;
                    comm.respond("Total:\n" + total + " Php.");
                }
                break;
使用MVC模式..抱歉输入错误。试着从中理解一些道理。 希望我给了你一些想法。。如果这有助于提高我的分数:) 或 只需在MainActivity中创建两个方法和一个
public int total

public void commonTotal(int t){
 total = total +t;
}

public void whatsthetotal(){
return total;
}

并调用此方法

不要在每个选项卡中进行计算,只需将选中的复选框值传递给主片段。在碎片计算中,你得到了正确的值,我怎么做,先生?我现在很困惑,因为我试图公开int,但它不起作用:(首先在主片段中设置int-total。现在在每个选项卡中,当您选中复选框pass comm.respond(“50”);value。然后在主片段中设置total+50,然后设置text()。与取消选中框pass comm.respond(“50”);我应该将int放入public void respond(…)或者就在公共类Main之后…?对不起,我只是新手total;在total片段的extend片段之后{我应该把公共类common放在哪里…对象呢?作为一个新手,我的思想会爆炸。在你的两个片段中创建一个新类CommonTotal…而不是创建total integer…创建CommonTotal的对象,无论你在哪里做“total=total+your_num”,调用CommonTotal.saveTotal(your_num)我使用了你的第一个建议,但输出是不同的。它只是说地址可能。你能给我看一下你在github上的全部代码吗?