转移5个活动页面的数据26编辑文本字段并计算最后的android活动

时间:2013-09-04 10:04:33

标签: android eclipse

我的问题与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并在一页上发布结果。

问题: - 获取用户文本所有小数 如果字段留空并突出显示字段,则用户获取提示。 如果用户按下之前的活动应该先前已输入值。

任何人都可以帮我解决这个问题.. 谢谢 莫妮卡

3 个答案:

答案 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") ;