如何在Android中将变量从一个类传递到另一个类

时间:2018-04-26 19:40:49

标签: android variables android-activity

如何将用户输入(从TextView)分配到变量中,然后在另一个类中调用该变量?

在我的MainActivity中,我有以下用户输入的内容:

Button confirm;
EditText inputField;
String typedChar;
char[] cars = typedChar.toCharArray();

@SuppressLint("WrongViewCast")
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    confirm = (Button)findViewById(R.id.btConfirmInput);

    inputField = (EditText) findViewById(R.id.etInputChars);

    confirm.setOnClickListener(
            new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                  typedChar = inputField.getText().toString();

                }
            }
    );

我正在尝试存储输入并将其转换为char

String typedChar;
    char[] cars = typedChar.toCharArray();

现在我想在以下方法中使用cars打印到自定义视图:

 private void drawText() {
        for (int i = 0; i < txtPosByColumn.length; i++) {
            canvas.drawText("" + cars[RANDOM.nextInt(cars.length)], i * fontSize, txtPosByColumn[i] * fontSize, paintTxt);

            if (txtPosByColumn[i] * fontSize > height && Math.random() > 0.975) {
                txtPosByColumn[i] = 0;
            }

            txtPosByColumn[i]++;
        }

然而,我能够将硬编码值分配给cars,如下所示:

private char[] chars = "010101".toCharArray();

但我希望它来自用户输入

任何人请友好的建议,指导。我知道我做错了但却想不出来......

PS:Noob here

2 个答案:

答案 0 :(得分:1)

你把变量放在这样的Intent中:

confirm.setOnClickListener(
     new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            typedChar = inputField.getText().toString();
            char[] chars = typedChar.toCharArray();
            Intent intent = new Intent(MyCurrentActivity.this, MySecondActivity.class);
            intent.putExtra("somethingWithARelevantName", chars);
            startActivity(intent);
            }
       }
    );

你可以在第二次活动中得到它:

Intent intent = getIntent();
char[] chars = intent.getExtras().getCharArray("somethingWithARelevantName");

编辑:如果想要将您的变量放在不是活动的类中,可以在构造函数中传递它:

class MyClass{

    char[] chars;

    MyClass(char[] chars){

        this.chars = chars;

    }

}

答案 1 :(得分:0)

您应该指定其他类的类型。 如果它是一个简单的Java类,您可以将它作为字段传递给drawText(char []数组); 但是,如果您正在处理以下活动: 在您的第一个活动中,在启动其他活动之前,使用额外意图在活动之间发送数据,如之前的答案所示。