如何使用EditText编辑全局变量以将值传递给其他活动?

时间:2015-08-20 21:06:23

标签: java android variables global

我在这里遇到变量问题。我创建了一个简单的Android游戏。级别取决于用户的输入(birthay和birthmonth是变量)。

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

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);

    }
}

变量是一个String,所以我使用getText()。toString()将EditText变为一个String但它不起作用。 当我给值一个具体的String值时,它也能正常工作

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

知道怎么解决吗?

谢谢^^

1 个答案:

答案 0 :(得分:2)

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

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

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

PS:“它不起作用”不是对你的问题的一个很好的描述,试着更准确一点(你期望发生什么,实际发生了什么)。

PPS:通过intent.putExtra()将字符串传递给下一个活动将是传递数据的更好方法。