我正在尝试访问类edttxt
中存在的Mainactivity
值,这包含在类Mainactivity
中:
Button btn=(Button)findViewById(R.id.btn);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
EditText edttxt =(EditText)findViewById(R.id.edttxt);
TextView txtview =(TextView)findViewById(R.id.textView);
txtview.setText(edttxt.getText().toString());
}
});
我需要的访问是在另一个类中用edttxt值替换100个值,这是我需要修改另一个类的部分:
public void switchFlash() {
final Runnable runnable = new Runnable() {
@Override
public void run() {
if (isFlashOn()) {
turnOffFlash();
x++;
} else if (x>20) {
turnOffFlash();
}
else
{
turnOnFlash();
}
handler.postDelayed(this,100);
}
};
handler.postDelayed(runnable,100);
}
答案 0 :(得分:0)
正如我从上面的对话以及代码的上下文中所理解的那样,您希望传递给另一个类的是EditText视图中包含的值(字符串),而不仅仅是视图本身。在这种情况下,您有不同的选项,但一种简单的方法是使用如下的约束器在创建对象时将此“值”传递给另一个类:
Button btn=(Button)findViewById(R.id.btn);
final EditText edttxt =(EditText)findViewById(R.id.edttxt);
OtherClass otherClass = new OtherClass(delay);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
delay = edttxt.getText().toString();
TextView txtview =(TextView)findViewById(R.id.textView);
txtview.setText(edttxt.getText().toString());
}
});
将延迟声明为MainActivity类的全局变量,如:
public class MainActivity extends AppCompatActivity {
private String delay;
....
你的其他课可能看起来像这样:
public class OtherClass {
int delay;
public OtherClass(String delay){
this.delay = Integer.parseInt(delay);
}
//...your code
public void switchFlash() {
final Runnable runnable = new Runnable() {
@Override
public void run() {
if (isFlashOn()) {
turnOffFlash();
x++;
} else if (x>20) {
turnOffFlash();
}
else
{
turnOnFlash();
}
handler.postDelayed(this,delay);
}
};
handler.postDelayed(runnable,delay);
}
}