我的问题与Android应用程序有关到目前为止我能够使用变量和onclick按钮创建5个不同的活动以传递下一个活动......
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字段。
我的目标是: - 在一个计算页面中获取所有编辑文本。 执行claculation并在一页上发布结果。
问题: - 获取用户文本所有小数 如果字段留空并突出显示字段,则用户获取提示。 如果用户按下之前的活动应该先前已输入值。
任何人都可以帮我解决这个问题.. 谢谢 莫妮卡
答案 0 :(得分:1)
如果要在整个应用程序中保存数据,请使用“共享的参考”
保存值:
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);
为此“用户按下之前的活动应该先前已输入值”,您可以尝试使用finish()或加载首选项值
finish();
答案 1 :(得分:0)
我认为您必须在ArrayList<String> data = new ArrayList<String>();
时为每项活动创建onClick()
。将“添加所有数据”添加到ArrayList
,将此ArrayList
传递给意图,将额外的内容传递给您从getIntent()
获取以前活动数据的2,3,4活动,添加您当前的活动数据,传递下一个活动,最后一个活动使用先前和当前数据进行计算。
/**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);
}
答案 2 :(得分:0)
使用各种方法可以处理它
1-在应用程序级别定义所有字段,这将使所有字段保持活动状态,直到除非应用程序处于活动状态 优点:一旦定义使用整个应用程序 缺点:一旦应用程序关闭数据丢失。
意图中的2次传递值在下一个活动中处理它,然后组合先前和当前活动的字段并将其传递给下一个活动 优点:在来回活动中使用Fields 缺点:一旦app关闭数据丢失。 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") ;