Java 获取变量值

Java 获取变量值,java,android,Java,Android,我目前有两个变量,iR和iL,它们被定义为用户触摸屏幕的次数。我对它们的定义如下所示: public class Touchscreen extends Activity { int iL; int iR; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.a

我目前有两个变量,
iR
iL
,它们被定义为用户触摸屏幕的次数。我对它们的定义如下所示:

public class Touchscreen extends Activity {

int iL;
int iR;

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

        final View touchLayoutL = findViewById(R.id.touchLayoutL);
        final View touchLayoutR = findViewById(R.id.touchLayoutR);
        final Button redo = (Button)findViewById(R.id.redo);
        final Button next = (Button)findViewById(R.id.next);

        iL=1;
        iR=1;

        touchLayoutL.setOnTouchListener(new View.OnTouchListener(){
            @Override
            public boolean onTouch(View v, MotionEvent event){
                if (event.getAction()==(MotionEvent.ACTION_DOWN)){
                    iL++;
                }
        });

        touchLayoutR.setOnTouchListener(new View.OnTouchListener(){
            @Override
            public boolean onTouch(View v, MotionEvent event){
                if (event.getAction()==(MotionEvent.ACTION_DOWN)){
                    iR++;
                }
        });

        if (iL>1 || iR>1) redo.setTypeface(null, Typeface.BOLD);
        if (iL>3 && iR>3) next.setTypeface(null, Typeface.BOLD);

    }
我遇到的问题是最后两行代码

        if (iL>1 || iR>1) redo.setTypeface(null, Typeface.BOLD);
        if (iL>3 && iR>3) next.setTypeface(null, Typeface.BOLD);
由于某种原因,
redo
next
字体从来没有改变过。我试着在不同的地方移动这两条线,但它们仍然不起作用。有人知道为什么会这样吗

提前谢谢

那是因为

    if (iL>1 || iR>1) redo.setTypeface(null, Typeface.BOLD);
    if (iL>3 && iR>3) next.setTypeface(null, Typeface.BOLD);
仅在onCreateMethod中执行,但不附加到侦听器。
尝试使用onTouch方法

这是因为

    if (iL>1 || iR>1) redo.setTypeface(null, Typeface.BOLD);
    if (iL>3 && iR>3) next.setTypeface(null, Typeface.BOLD);
仅在onCreateMethod中执行,但不附加到侦听器。
尝试使用onTouch方法

这是因为

    if (iL>1 || iR>1) redo.setTypeface(null, Typeface.BOLD);
    if (iL>3 && iR>3) next.setTypeface(null, Typeface.BOLD);
仅在onCreateMethod中执行,但不附加到侦听器。
尝试使用onTouch方法

这是因为

    if (iL>1 || iR>1) redo.setTypeface(null, Typeface.BOLD);
    if (iL>3 && iR>3) next.setTypeface(null, Typeface.BOLD);
仅在onCreateMethod中执行,但不附加到侦听器。

尝试进入onTouch方法

设置字体
需要
字体
,不能使用
null

如果您想使用
按钮的当前
字体
,您可以使用该方法

或者,如果您使用的是
normal
字体,则可以使用
setTypeface
单参数方法。在这种情况下,您将提供
字体

if (iL>1 || iR>1) redo.setTypeface(Typeface.DEFAULT_BOLD);
if (iL>3 && iR>3) next.setTypeface(Typeface.DEFAULT_BOLD);

/*
 * Same as above

if (iL>1 || iR>1) redo.setTypeface(Typeface.NORMAL, Typeface.BOLD);
if (iL>3 && iR>3) next.setTypeface(Typeface.NORMAL, Typeface.BOLD);

 */

setTypeface
需要
Typeface
,不能使用
null

如果您想使用
按钮的当前
字体
,您可以使用该方法

或者,如果您使用的是
normal
字体,则可以使用
setTypeface
单参数方法。在这种情况下,您将提供
字体

if (iL>1 || iR>1) redo.setTypeface(Typeface.DEFAULT_BOLD);
if (iL>3 && iR>3) next.setTypeface(Typeface.DEFAULT_BOLD);

/*
 * Same as above

if (iL>1 || iR>1) redo.setTypeface(Typeface.NORMAL, Typeface.BOLD);
if (iL>3 && iR>3) next.setTypeface(Typeface.NORMAL, Typeface.BOLD);

 */

setTypeface
需要
Typeface
,不能使用
null

如果您想使用
按钮的当前
字体
,您可以使用该方法

或者,如果您使用的是
normal
字体,则可以使用
setTypeface
单参数方法。在这种情况下,您将提供
字体

if (iL>1 || iR>1) redo.setTypeface(Typeface.DEFAULT_BOLD);
if (iL>3 && iR>3) next.setTypeface(Typeface.DEFAULT_BOLD);

/*
 * Same as above

if (iL>1 || iR>1) redo.setTypeface(Typeface.NORMAL, Typeface.BOLD);
if (iL>3 && iR>3) next.setTypeface(Typeface.NORMAL, Typeface.BOLD);

 */

setTypeface
需要
Typeface
,不能使用
null

如果您想使用
按钮的当前
字体
,您可以使用该方法

或者,如果您使用的是
normal
字体,则可以使用
setTypeface
单参数方法。在这种情况下,您将提供
字体

if (iL>1 || iR>1) redo.setTypeface(Typeface.DEFAULT_BOLD);
if (iL>3 && iR>3) next.setTypeface(Typeface.DEFAULT_BOLD);

/*
 * Same as above

if (iL>1 || iR>1) redo.setTypeface(Typeface.NORMAL, Typeface.BOLD);
if (iL>3 && iR>3) next.setTypeface(Typeface.NORMAL, Typeface.BOLD);

 */

出于某种原因
原因是您的方法是在用户触摸屏幕之前执行的。@user3616949您提供的是带有粗体标志的空字体。您应该执行
redo.setTypeface(redo.getTypeface(),Typeface.BOLD)
。您应该执行
redo.setTypeface(redo.getTypeface(),Typeface.BOLD)
。您应该执行
redo.setTypeface(redo.getTypeface(),Typeface.BOLD)
。您应该执行
redo.setTypeface(redo.getTypeface(),Typeface.BOLD)