1

到目前为止,我的问题与 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 个不同的编辑文本字段。

我的目标是:- 在一个计算页面中获取所有编辑文本。执行计算并将结果发布在一页上。

问题:- 如果字段留空并突出显示字段,则 获取用户文本所有十进制数字用户得到提示。如果用户按回以前的活动应该有以前输入的值。

谁能帮我解决这个问题..谢谢莫妮卡

4

3 回答 3

1

如果您想在整个应用程序中保存数据,请使用“SHARED PEFERENCES”

保存值:

    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();
于 2013-09-04T10:53:50.193 回答
0

我认为您必须ArrayList<String> data = new ArrayList<String>();onClick(). 按“添加所有数据”到ArrayList,将其传递ArrayList给意图,添加额外内容,在 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);
    }
于 2013-09-04T10:15:51.250 回答
0

使用各种方法,您可以处理它

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") ;
于 2013-09-04T10:17:14.807 回答