重新激活活动后TextViews变得不可编辑了吗?

时间:2013-06-15 03:49:26

标签: android arraylist textview settext

所以目前我正在制作一个教育应用程序,用户可以通过按下按钮查看如何解决给定问题。虽然我的代码最初工作正常,当我点击后退按钮并单击我的View Solution按钮时,弹出我的默认布局,我无法编辑最后四个TextView。这是我的代码:

public class AdditionTensSolutionActivity extends Activity {
public static ArrayList<TextView> explain = new ArrayList<TextView>(3);
public static Button nextstep;
public static int onesnum1 = TensAdditionExerciseActivity.n1display % 10;
public static int onesnum2 = TensAdditionExerciseActivity.n2display % 10;
public static int onesanswer = onesnum1 + onesnum2;
public static int onesanswermod = onesanswer % 10;
public static int tensnum1 = TensAdditionExerciseActivity.n1display / 10;
public static int tensnum2 = TensAdditionExerciseActivity.n2display / 10;
public static int tensanswer = tensnum1 + tensnum2;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.showsolutionlayout);

    TextView numrow1 = (TextView) findViewById(R.id.solproblemrow1);
    TextView numrow2 = (TextView) findViewById(R.id.solproblemrow2);
    TextView solution = (TextView) findViewById(R.id.solutiontextview);
    TextView carryover = (TextView) findViewById(R.id.carryovernumbers);

    TextView exp1 = (TextView) findViewById(R.id.explain1);
    TextView exp2 = (TextView) findViewById(R.id.explain2);
    TextView exp3 = (TextView) findViewById(R.id.explain3);
    TextView exp4 = (TextView) findViewById(R.id.explain4);

    numrow1.setText(TensAdditionExerciseActivity.n1display + "");
    numrow2.setText("   " + TensAdditionExerciseActivity.n2display + " +");

    explain.add(exp1);
    explain.add(exp2);
    explain.add(exp3);
    explain.add(exp4);

    nextstep = (Button) findViewById(R.id.nextstep);

    for (int i = 0; i < 4; i++) {
        explain.get(i).setVisibility(View.GONE);
    }

    solution.setVisibility(View.GONE);
    carryover.setVisibility(View.GONE);
    explain.get(0).setText("test");
    setTextViews();
    nextButtonsetOnClickListener();

}

protected void nextButtonsetOnClickListener() {
    nextstep.setOnClickListener(new View.OnClickListener() {
        int i = 0;

        public void onClick(View v) {
            explain.get(i).setVisibility(View.VISIBLE);
            i++;

            if (i > 2 && onesanswer < 10) {
                nextstep.setClickable(false);

            }

            if (i > 3 && onesanswer >= 10) {
                nextstep.setClickable(false);

            }
        }
    });

}

protected void setTextViews() {

    explain.get(0).setText(
            "Add " + (onesnum1) + " and " + (onesnum2) + " which equals "
                    + (onesanswer) + ".");

    if (onesanswer >= 10) {

        explain.get(1).setText(
                "Since the answer is 10 or greater, 1 must carry over to the tens place and "
                        + onesanswermod + " is left in the ones place.");
        explain.get(2).setText(
                "Add the tens place digits, " + tensnum1 + " and "
                        + tensnum2
                        + ". Don't forget to add the carried over 1!");
        explain.get(3).setText(
                "1 + " + tensnum1 + " + " + tensnum2 + " = "
                        + (tensanswer + 1));

    } else {
        explain.get(1).setText(
                "Add the tens place digits: " + tensnum1 + " and "
                        + tensnum2 + ".");

        explain.get(2).setText(
                tensnum1 + " + " + tensnum2 + " = " + tensanswer);
    }
啊,我想通了。我将我的ArrayList设置为静态而不是最终,但我仍然不完全是我的错误。有人愿意告诉我它为何会产生如此大的差异吗?

1 个答案:

答案 0 :(得分:0)

静态变量/方法只有整个类的一个实例。这意味着,对于您的列表视图,在整个应用中,您的活动的所有实例只存在一个,这就是您收到错误的原因。 Final意味着它不能在构造函数之外的任何地方初始化,也不能在定义变量时初始化。 (Difference between Static and final?)。