如何使用 EditText 编辑全局变量以将值传递给另一个 activity?

How to edit global variables with EditText to pass the value to an other activity?

我对变量有疑问。我创建了一个简单的 Android 游戏。级别取决于用户所做的输入(生日和出生月份是变量)。

我做了一个更简单的应用程序,它只涉及全局变量问题。 以下是文件:

Global.java

import android.app.Application;

public class Globals extends Application {

    private String someVariable;

    public String getSomeVariable() {
        return someVariable;
    }

    public void setSomeVariable(String someVariable) {
        this.someVariable = someVariable;
    }
}

MainActivity.java:

public class MainActivity extends Activity {

    EditText editText;
    Button button;

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

        editText = (EditText) findViewById(R.id.editText);
        button = (Button) findViewById(R.id.button);

        String m = editText.getText().toString();

        ((Globals) this.getApplication()).setSomeVariable(m);

    }

    public void saveName(View v) {
        Intent first = new Intent(this, FirstActivity.class);
        startActivity(first);

    }

}

FirstActivity.java:

public class FirstActivity extends Activity {

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

        TextView textf = (TextView) findViewById(R.id.textfirst);

        String s = ((Globals) this.getApplication()).getSomeVariable();

        textf.setText(s);

    }
}

该变量是一个字符串,所以我使用 getText().toString() 将 EditText 变成了一个字符串,但它不起作用。 当我给该值一个具体的字符串值时,它也能正常工作

((Globals) this.getApplication()).setSomeVariable(m);((Globals) this.getApplication()).setSomeVariable("message");

知道如何解决吗?

谢谢^^

您将 EditText 的内容分配给 onCreate() 方法中的变量,其中 EditText 可能为空。做

((Globals) this.getApplication()).setSomeVariable(m);

在您的 saveName(View v) 方法中,您应该没问题。

PS:"it doesn't work" 没有很好地描述您的问题,请尝试更准确一点(您期望发生什么,实际发生了什么)。

PPS:通过 intent.putExtra() 将您的字符串传递给下一个 activity 将是一种更好的数据传递方式。