变量的值在另一个类中使用时不要更改

时间:2014-04-23 20:35:13

标签: android variables

抱歉,我真的很业余。 我有4个班级:A B C D. 我想在我的C类中计算一些东西并在D类中显示结果,但我不知道为什么我的应用程序总是在D类中显示为零!!!

以下是我的代码简介:

C类:

public class ClassC extends Activity {

            public static int Result;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.ClassC);

                    final CheckBox cb = (CheckBox) findViewById(R.id.CheckBox);

                         Button b1 = (Button) findViewById(R.id.Calculate);
                 b1.setOnClickListener(new View.OnClickListener() {


            @Override
            public void onClick(View v) {

                            boolean b = cb.isChecked();

                            if (ClassA.MyVazn() < 251 ){
            Result = 26500;
            }
            else if (ClassA.MyVazn() >= 251 && ClassA.MyVazn() <= 500){
            Result = 31800;
            }

            else {
            Result = 38700;
                            }

                            if (b){
                            Result += 12000;
                            }

                            Intent a = new Intent (ClassC.this,ClassD.class);
            startActivity(a);
            overridePendingTransition(R.anim.a,R.anim.b);

                        }
            }

            public static int FinalResult (){
        return Result;
    }




}

D类

public class ClassD extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.ClassD);


        TextView r = (TextView) findViewById(R.id.Result);
        r.setText(String.valueOf(ClassC.FinalResult()));
      }
}

帮助plz :(

3 个答案:

答案 0 :(得分:0)

在点击某些内容之前,Result似乎未计算ClassC,但您尝试使用ClassD的{​​{1}}方法阅读它,在计算发生之前。

您可能需要将以下行移至代码的某些部分,>点击后

onCreate

答案 1 :(得分:0)

因为C类可能不再存在了。将结果发送到意图

Intent a = new Intent (ClassC.this,ClassD.class);
a.putExtra("result",result);
startActivity(a);

然后在你的ClassD得到它

Intent i = getIntent();
int resultFromActivity = i.getIntExtra("result",someDefaultValue);

TextView r = (TextView) findViewById(R.id.Result);
r.setText(String.valueOf(resultFromActivity));

答案 2 :(得分:0)

感谢所有,但我发现了我的问题,这里的代码都没问题,而且我的ClassB从未编译的问题因为定义了一些代码在某些特殊条件下跳过它! 然后我试图在ClassB中获得我的方法的价值!!