访问不同类的值

时间:2016-08-19 11:26:04

标签: java android class

我正在尝试访问类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);
    }

1 个答案:

答案 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);
    }
}