我在这里遇到变量问题。我创建了一个简单的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");
知道怎么解决吗?
谢谢^^
答案 0 :(得分:2)
您要将EditText
内容分配给onCreate()
方法中的EditText
可能为空的变量。做
((Globals) this.getApplication()).setSomeVariable(m);
在你的saveName(View v)
方法中,你应该没问题。
PS:“它不起作用”不是对你的问题的一个很好的描述,试着更准确一点(你期望发生什么,实际发生了什么)。
PPS:通过intent.putExtra()将字符串传递给下一个活动将是传递数据的更好方法。