在android中:我正在尝试将数据从一个活动/屏幕转移到另一个活动/屏幕。
假设我正在添加两个数字。我使用2个EditText视图,几个标签和一个“确定”按钮布局我的第一个屏幕(xml)。现在,我想将我输入的数字添加到EditText视图中。假设我输入2和2(2 + 2 = 4)。
现在,当我点击“确定”按钮时,我想要一个新的屏幕/活动出现,只是给我看答案(4)。我是否使用全球变量进行此操作?任何帮助将不胜感激。
答案 0 :(得分:23)
第一项活动
Intent myIntent = new Intent();
myIntent.putExtra("key", "value");
startActivity(myIntent);
新活动
Intent myIntent = getIntent(); // this is just for example purpose
myIntent.getExtra("key");
查看Android开发网站上的different types you can use
注意:如果您正在寻找一种全局共享对象/数据的方法,那么您可以扩展Application类。查看How to declare global variables in Android?(Soonil回答)
答案 1 :(得分:4)
我想你正在使用Intent开始“下一个屏幕”(它应该这样做)。
在Intent中你可以传递额外的东西(putExtra)和onCreate in“next activity”你可以getIntent().getXExtra()
(用字段类型替换X)
答案 2 :(得分:2)
查看Some Intent examples部分(来自常见任务以及Android中的操作方法):
基本上,你使用myIntent.putExtra(...) 将数据(可以是String,Int,Boolean等)发送到另一个接收端(另一个活动)......
然后,结果将被传递回调用Activity的onActivityResult()方法:
protected void onActivityResult(int requestCode, int resultCode, Intent data){
// See which child activity is calling us back.
switch (resultCode) {
case CHOOSE_FIGHTER:
// This is the standard resultCode that is sent back if the
// activity crashed or didn't doesn't supply an explicit result.
if (resultCode == RESULT_CANCELED){
myMessageboxFunction("Fight cancelled");
}
else {
myFightFunction(data);
}
default:
break;
}
小时。
答案 3 :(得分:0)
我项目的样本。我们必须使用Bundle来获取数据。
使用from / first活动中的代码设置数据。您可以设置所有类型的数据类型,包括数组。
Intent i = new Intent(this, LanguageSetting.class);
i.putExtra("From", 1);
startActivity(i);
如何检索数据,在新/第二活动中编写以下代码。
Intent myIntent = getIntent();
Bundle b = myIntent.getExtras();
intCameFrom = b.getInt("From");