есть 2 класса; MainActivity
и SimpleFLashLighImpl
. В классе MainActivity
я поместил код, чтобы получить строку из поля ввода «нет» , а затем преобразовать ее в целое число «intdelay». Это MainActivity часть кода:Доступ к переменной из разных классов
public static volatile int intdelay = 1000;
textView=(TextView)findViewById(R.id.textView);
delay=(EditText)findViewById(R.id.edttxt);
String no=delay.getText().toString(); //this will get a string
try{
MainActivity.intdelay = Integer.parseInt(no);
}catch(NumberFormatException ex){ // handle your exception
}
Button btn=(Button)findViewById(R.id.btn);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
textView.setText(delay.getText());
}
});
в другом классе я пытаюсь получить доступ к «intdelay» INT значение, чтобы сделать задержку с помощью обработчика. Это другой класс часть кода:
public void switchFlash() {
final Runnable runnable = new Runnable() {
@Override
public void run() {
if (isFlashOn()) {
turnOffFlash();
x++;
} else if (x>10) {
turnOffFlash();
}
else
{
turnOnFlash();
}
handler.postDelayed(this, MainActivity.intdelay);
}
};
handler.postDelayed(runnable,MainActivity.intdelay);
}
Но проблема в том, что каждый раз, когда я получаю задержку 1000, который инициализируется в начале MainActivity
класса. Каким может быть решение?
Нет инструкции, которая изменяет переменную класса 'intdelay', поэтому она всегда остается на начальном значении 1000. Может быть, выражение' int intdelay = Integer.parseInt (no) 'предназначено для его изменения, но оно вводит локальная переменная блока вместо этого, которая оставляет переменную класса нетронутой. Но даже если вы удалите объявление типа, оно может не делать то, что вы хотите, потому что действие, похоже, происходит в методе 'onClick' кнопки, где вы снова не касаетесь переменной класса. – Seelenvirtuose
Любое предложение? – Aloweiwi