传输5个活动页面的数据26编辑文本字段并在最后一个android活动中计算
我的问题与android应用程序有关,到目前为止,我能够创建5个不同的活动,其中包含变量和onclick按钮,以传递下一个活动传输5个活动页面的数据26编辑文本字段并在最后一个android活动中计算,android,eclipse,Android,Eclipse,我的问题与android应用程序有关,到目前为止,我能够创建5个不同的活动,其中包含变量和onclick按钮,以传递下一个活动 public class Abc extends Activity{ Button one2five; EditText edtA, edtB, edtC, edtD, edtE, edtF; String tA, tB, tC, tD, tE, tF; @Override protected void onCreate(Bundle saved
public class Abc extends Activity{
Button one2five;
EditText edtA, edtB, edtC, edtD, edtE, edtF;
String tA, tB, tC, tD, tE, tF;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.abc);
one2five = (Button) findViewById(R.id.btp1);
edtA = (EditText) findViewById(R.id.etA);
tA = edtA.getText().toString();
edtB = (EditText) findViewById(R.id.etB);
tB = edtB.getText().toString();
edtC = (EditText) findViewById(R.id.etC);
tC = edtC.getText().toString();
edtD = (EditText) findViewById(R.id.etD);
tD = edtD.getText().toString();
edtE = (EditText) findViewById(R.id.etE);
tE = edtE.getText().toString();
edtF = (EditText) findViewById(R.id.etF);
tF = edtF.getText().toString();
one2five.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent openg2j = new Intent("com.sport.sport.G2J");
startActivity(openg2j);
}
});
}
}
现在以此为基础,我又创建了4个页面,总共26个不同的edittext字段
我的目标是:-
在一个计算页面中获取所有编辑文本。
执行计算并在一页上发布结果
问题:-
获取用户文本所有十进制数字
如果某个字段留空并高亮显示该字段,则用户将得到提示。
如果用户按下back键,则“上一个活动”之前应已输入值
有人能帮我解决这个问题吗。。
谢谢
monika我认为您必须创建
ArrayList data=new ArrayList()当onClick()
时,为每个活动编写代码>。按“添加所有数据”到ArrayList
,将此ArrayList
传递到intent,在2,3,4活动上添加额外数据,您从getIntent()
获取上一个活动数据,添加当前活动数据,并传递下一个活动和上一个活动,使用上一个和当前数据进行计算
/**First Activity**/
ArrayList<String> data = new ArrayList<String>();
@Override
public void onClick(View v) {
data.clear();
data.add(tA);
--------------
--------------
data.add(tZ);
Intent intent = new Intent(SecondActivity.class, FirstActivity.this);
intent.putStringArrayListExtra("IN_PREVIOUS_DATA", data);
startActivity(intent);
}
/**Second Activity**/
ArrayList<String> data = new ArrayList<String>();
@Override
public void onClick(View v) {
data.clear();
data.addAll((ArrayList<String>)getIntent().getStringArrayListExtra("IN_PREVIOUS_DATA"));
data.add(tA);
--------------
--------------
data.add(tZ);
Intent intent = new Intent(ThirdActivity.class, SecondActivity.this);
intent.putExtra("IN_PREVIOUS_DATA", data);
startActivity(intent);
}
/**第一个活动**/
ArrayList数据=新的ArrayList();
@凌驾
公共void onClick(视图v){
data.clear();
数据。添加(tA);
--------------
--------------
数据。添加(tZ);
意向意向=新意向(SecondActivity.class,FirstActivity.this);
intent.putStringArrayListExtra(“在以前的数据中”,数据);
星触觉(意向);
}
/**第二项活动**/
ArrayList数据=新的ArrayList();
@凌驾
公共void onClick(视图v){
data.clear();
addAll((ArrayList)getIntent().getStringArrayListExtra(“在上一个数据中”);
数据。添加(tA);
--------------
--------------
数据。添加(tZ);
意向意向=新意向(ThirdActivity.class,SecondActivity.this);
intent.putExtra(“在上一个数据中”,数据);
星触觉(意向);
}
我认为您必须创建ArrayList data=new ArrayList()当onClick()
时,为每个活动编写代码>。按“添加所有数据”到ArrayList
,将此ArrayList
传递到intent,在2,3,4活动上添加额外数据,您从getIntent()
获取上一个活动数据,添加当前活动数据,并传递下一个活动和上一个活动,使用上一个和当前数据进行计算
/**First Activity**/
ArrayList<String> data = new ArrayList<String>();
@Override
public void onClick(View v) {
data.clear();
data.add(tA);
--------------
--------------
data.add(tZ);
Intent intent = new Intent(SecondActivity.class, FirstActivity.this);
intent.putStringArrayListExtra("IN_PREVIOUS_DATA", data);
startActivity(intent);
}
/**Second Activity**/
ArrayList<String> data = new ArrayList<String>();
@Override
public void onClick(View v) {
data.clear();
data.addAll((ArrayList<String>)getIntent().getStringArrayListExtra("IN_PREVIOUS_DATA"));
data.add(tA);
--------------
--------------
data.add(tZ);
Intent intent = new Intent(ThirdActivity.class, SecondActivity.this);
intent.putExtra("IN_PREVIOUS_DATA", data);
startActivity(intent);
}
/**第一个活动**/
ArrayList数据=新的ArrayList();
@凌驾
公共void onClick(视图v){
data.clear();
数据。添加(tA);
--------------
--------------
数据。添加(tZ);
意向意向=新意向(SecondActivity.class,FirstActivity.this);
intent.putStringArrayListExtra(“在以前的数据中”,数据);
星触觉(意向);
}
/**第二项活动**/
ArrayList数据=新的ArrayList();
@凌驾
公共void onClick(视图v){
data.clear();
addAll((ArrayList)getIntent().getStringArrayListExtra(“在上一个数据中”);
数据。添加(tA);
--------------
--------------
数据。添加(tZ);
意向意向=新意向(ThirdActivity.class,SecondActivity.this);
intent.putExtra(“在上一个数据中”,数据);
星触觉(意向);
}
通过各种方法,您可以处理它
1-在应用程序级别定义所有字段这将使所有字段保持活动状态,直到应用程序处于活动状态
优点:一旦定义,在整个应用程序中使用
缺点:一旦应用程序关闭,数据就会丢失
2-在意图中传递值,在下一个活动中处理它,然后组合上一个和当前活动的字段,并将其传递给下一个活动
优点:在来回活动中使用字段
缺点:一旦应用程序关闭,数据就会丢失。
3-在共享首选项中保存字段,并在应用程序处于活动状态或不活动状态时随时使用该字段
优点:一旦提交,数据就会保存
4-您可以使用ArrayList并在每个当前到下一个活动上下文切换中添加数据
因此,使用它的场景取决于您
如果您想在以前的活动中获取数据
您可以重写onbackpressed方法并相应地执行您的功能
使用方法2的示例代码
问题中的修改代码
public class Abc extends Activity{
Button one2five;
EditText edtA, edtB, edtC, edtD, edtE, edtF;
String tA, tB, tC, tD, tE, tF;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.abc);
one2five = (Button) findViewById(R.id.btp1);
edtA = (EditText) findViewById(R.id.etA);
tA = edtA.getText().toString();
edtB = (EditText) findViewById(R.id.etB);
tB = edtB.getText().toString();
edtC = (EditText) findViewById(R.id.etC);
tC = edtC.getText().toString();
edtD = (EditText) findViewById(R.id.etD);
tD = edtD.getText().toString();
edtE = (EditText) findViewById(R.id.etE);
tE = edtE.getText().toString();
edtF = (EditText) findViewById(R.id.etF);
tF = edtF.getText().toString();
one2five.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent openg2j = new Intent("com.sport.sport.G2J");
openg2j .putExtra("field1Data", tA);
openg2j .putExtra("field2Data", tB);
openg2j .putExtra("field3Data", tC);
openg2j .putExtra("field4Data", tD);
openg2j .putExtra("field5Data", tE);
startActivity(openg2j);
}
});
}
这就是如何将数据从当前类发送到下一个类
}
编辑:
在2ndActivity中,您可以获得如下数据:
String field5Data = getIntent().getStringExtra("field5Data") ;
通过各种方法,您可以处理它
1-在应用程序级别定义所有字段这将使所有字段保持活动状态,直到应用程序处于活动状态
优点:一旦定义,在整个应用程序中使用
缺点:一旦应用程序关闭,数据就会丢失
2-在意图中传递值,在下一个活动中处理它,然后组合上一个和当前活动的字段,并将其传递给下一个活动
优点:在来回活动中使用字段
缺点:一旦应用程序关闭,数据就会丢失。
3-在共享首选项中保存字段,并在应用程序处于活动状态或不活动状态时随时使用该字段
优点:一旦提交,数据就会保存
4-您可以使用ArrayList并在每个当前到下一个活动上下文切换中添加数据
因此,使用它的场景取决于您
如果您想在以前的活动中获取数据
您可以重写onbackpressed方法并相应地执行您的功能
使用方法2的示例代码
问题中的修改代码
public class Abc extends Activity{
Button one2five;
EditText edtA, edtB, edtC, edtD, edtE, edtF;
String tA, tB, tC, tD, tE, tF;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.abc);
one2five = (Button) findViewById(R.id.btp1);
edtA = (EditText) findViewById(R.id.etA);
tA = edtA.getText().toString();
edtB = (EditText) findViewById(R.id.etB);
tB = edtB.getText().toString();
edtC = (EditText) findViewById(R.id.etC);
tC = edtC.getText().toString();
edtD = (EditText) findViewById(R.id.etD);
tD = edtD.getText().toString();
edtE = (EditText) findViewById(R.id.etE);
tE = edtE.getText().toString();
edtF = (EditText) findViewById(R.id.etF);
tF = edtF.getText().toString();
one2five.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent openg2j = new Intent("com.sport.sport.G2J");
openg2j .putExtra("field1Data", tA);
openg2j .putExtra("field2Data", tB);
openg2j .putExtra("field3Data", tC);
openg2j .putExtra("field4Data", tD);
openg2j .putExtra("field5Data", tE);
startActivity(openg2j);
}
});
}
这就是如何将数据从当前类发送到下一个类
}
编辑:
在2ndActivity中,您可以获得如下数据:
String field5Data = getIntent().getStringExtra("field5Data") ;
如果要在整个应用程序中保存数据,请使用“共享引用”
保存值:
SharedPreferences preferences = getSharedPreferences("MY_SHARED_PREF",0);
SharedPreferences.Editor editor = preferences.edit();
editor.putInt(String.valueOf(key), value);//store int values, can use string,arrays,etc
editor.commit();
加载保存的值:
SharedPreferences getProgramPrefs = this.getSharedPreferences(
"MY_SHARED_PREF", MODE_WORLD_READABLE);
int Index = getProgramPrefs.getInt(String.valueOf(key), -1);
对于这个“用户按下back之前的活动应该已经输入了值”,您可以尝试使用fin