如何使用 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 将是一种更好的数据传递方式。
我对变量有疑问。我创建了一个简单的 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 将是一种更好的数据传递方式。