传输5个活动页面的数据26编辑文本字段并在最后一个android活动中计算

传输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

我的问题与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 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