我们可以在 android 中的一个包中为同一个键保留多个值吗?如果是这样如何获得这些价值?

can we keep multiple values for same key in a bundle in android ? if so how to get those values?

我被要求在 android 中设计一个应用程序。

我们必须输入 3 个数值并在摘要页面中显示一些计算。

我能够通过获取输入详细信息并使用捆绑将它们传递到摘要页面并计算平均值来做一个简单的应用程序。 (1次入境信息)。但是现在,我们要添加多次并且摘要需要给出平均值。请帮我解决这个问题。

存储多个值

如果您查看 Intent class, you can see that you can store an arraylist of integers using the putIntegerArrayListExtra method. You can then extract the arraylist using getIntegerArrayListExtra 的文档,这应该可以让您在不进行字符串转换和不真正使用包的情况下存储多个整数变得非常简单

例子

将 ArrayList 存储在包中

Intent intent = new Intent(this, OtherActivity.class);
ArrayList<Integer> values = new ArrayList<>();
// Add values to array list
intent.putIntegerArrayListExtra("myKey", values);

从 Bundle 中提取 ArrayList

Intent intent = getIntent();
List<Integer> values = intent.getIntegerArrayListExtra("myKey");

两个活动之间的通信

假设您有两个名为 InputActivity 和 CalculateActivity 的活动,您可以执行类似的操作。有关使用和处理 startActivityForResult 的更多信息,请查看 THIS 问题。

public class InputActivity extends Activity {
   // NOTE: Make sure this gets initialized at some point
   private ArrayList<Integer> pastValues;

    private void doSomethingWithInput(int input) {
        Intent intent = new Intent(this, CalculateActivity.class);
        this.pastValues.add(input)
        intent.putIntegerArrayListExtra("values", this.pastValues);
        startActivityForResult(intent, 1);
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (requestCode == 1 && resultCode == RESULT_OK) {
            // Here is the result. Do whatever you need with it.
            int result = data.getIntExtra("result");
        }
    }

}

public class CalculateActivity extends Activity {
    private void doCalculation() {
        Intent intent = this.getIntent();
        List<Integer> values = intent.getIntegerArrayListExtra("values");

        // do something with the extracted values
        int result = ....;

        Intent returnIntent = new Intent();
        intent.putExtra("result", result);
        this.setResult(RESULT_OK, returnIntent);
        this.finish();
    }
}