繁体   English   中英

按钮不会基于TextView中的新值进行更新; 仅先前设定的值

[英]Button doesn't update based on new value in TextView; only previously set value

我有3个按钮,它们彼此交互。 一个按钮减1,一个按钮加1,第三个按钮将值重置为12(默认值)。

下面的代码是我目前拥有的。 不离开活动就无法运行。 当前,它将从值中减去1并加1,但是如果我按两次则不会再减去1。 我想做的是这样的:

default button sets to 12
press minus 1 = 11
press minus 1 = 10  
press minus 1 = 9
press minus 1 = 8
press plus 1 = 9

目前,它无法正常运行。 它只是从Pref值中减去1,然后如果我再次按下它,则该值不会改变。

public class Character1 extends ActionBarActivity {

SharedPreferences pref;
Random rndNumbers = new Random(); 
String twelve, getdisplay2; 
int d20    = rndNumbers.nextInt(20) +1; 
Button roll, minus1, plus1, newturn;
TextView display, display2;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.character1);
    pref = getSharedPreferences("Character1", Context.MODE_PRIVATE);

    display2 = (TextView) findViewById(R.id.display2);
    minus1 = (Button) findViewById(R.id.minus1);
    plus1 = (Button) findViewById(R.id.plus1);
    newturn = (Button) findViewById(R.id.newturn);      

    roll = (Button) findViewById(R.id.d20);
    display = (TextView) findViewById(R.id.display1);
    getdisplay2 = pref.getString("display2", "");

    display2.setText(getdisplay2);

    TextWatcher watcher = new TextWatcher() {
        public void afterTextChanged(Editable s) {

            SharedPreferences.Editor editor=pref.edit();
            editor.putString("display2", display2.getText().toString());
            editor.commit();

        }
        public void beforeTextChanged(CharSequence s, int start, int count, int after) {

        }
        public void onTextChanged(CharSequence s, int start, int before, int count) {

            SharedPreferences.Editor editor=pref.edit();
            editor.putString("display2", display2.getText().toString());
            editor.commit();
        }
    };

    display2.addTextChangedListener(watcher);

    minus1.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            float AP = NumberUtils.toFloat(getdisplay2);
            display2.setText(Float.toString(AP - 1));

            SharedPreferences.Editor editor=pref.edit();
            editor.putString("display2", display2.getText().toString());
            editor.commit();
        }
    });

    plus1.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            float AP = NumberUtils.toFloat(getdisplay2);
            display2.setText(Float.toString(AP + 1));

            SharedPreferences.Editor editor=pref.edit();
            editor.putString("display2", display2.getText().toString());
            editor.commit();
        }
    });

    newturn.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            display2.setText(Float.toString(12));

            SharedPreferences.Editor editor=pref.edit();
            editor.putString("display2", display2.getText().toString());
            editor.commit();
        }
    });

    roll.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View arg0) {
                d20    = rndNumbers.nextInt(20) +1; 
                display.setText(" " + d20);

            }
        });

}

public void weavingstats (View view) 
{
    Intent intent = new Intent (this, WeavingPage.class);
    startActivity(intent);
}

public void combatstats (View view)
{
    Intent intent=new Intent (this, CombatPage.class);
    startActivity(intent);
}

public void charactersheetpage (View view)
{
    Intent intent=new Intent (this, CharacterCreationSheet1.class);
    startActivity(intent);
}

@Override
public void onBackPressed ()
{
    SharedPreferences.Editor editor=pref.edit();
    editor.putString("display2", display2.getText().toString());
    editor.commit();

    Intent intent = new Intent (this, MainActivity.class);
    startActivity(intent);
}

}

您必须添加getdisplay2 = pref.getString("display2", ""); NumberUtils所有调用之前。 就像是:

minus1.setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View v) {
        getdisplay2 = pref.getString("display2", "");
        float AP = NumberUtils.toFloat(getdisplay2);
        display2.setText(Float.toString(AP - 1));

        SharedPreferences.Editor editor=pref.edit();
        editor.putString("display2", display2.getText().toString());
        editor.commit();
    }
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM