在开始新活动之前在活动之间传递数据

时间:2014-04-24 11:19:40

标签: android android-intent android-activity sharedpreferences cart

我正在尝试将一些数据传递给另一个活动,但我需要在单击按钮时传递数据,但不启动新活动,当我有多个过去的数据时,启动新活动并查看所有内容我之前已经过去了。

此过程类似于购物车,添加产品,然后是另一个您看到购物车列表的活动。

我一直在尝试使用SharePrerences,但我只传递了一个数据。

final SharedPreferences mSettings = this.getSharedPreferences(PREFS_NAME, 0);
SharedPreferences.Editor editor = mSettings.edit();    
editor.putString(NOMBRE_TAG, tvNotas.getText().toString());
editor.putString(PRECIO_TAG, pantalla.getText()+"");
editor.commit();

使用putExtra我认为它不起作用,因为我不知道我将传递多少数据

Intent intent = new Intent(this, NAME.class);
intent.putextra("SOMETHING","value");
startActivity(intent);
String data = getIntent().getExtras().getString("SOMETHING");

我不知道其他形式。

这个过程类似于

3 个答案:

答案 0 :(得分:0)

当你使用共享偏好时每个"键"喜欢你的标签(NOMBRE_TAG,PRECIO_TAG)  将只保存一个项目。 这意味着,每次使用此键保存项目时,它将替换旧项目。

我推荐使用SQLITE数据库。

这里有一些如何开始的例子:

Android SQLite Example

答案 1 :(得分:0)

您可以使用静态类或单例吗?这样,您可以从第一个活动中放入您想要的任何内容,并从第二个活动中检索它。唯一的缺点是它无法在应用程序重启后继续存在。

答案 2 :(得分:-1)

使用putParcelableArrayList将所有数据作为数组列表传递---

    @Override
    public void onSaveInstanceState(final Bundle outState) {
    outState.putParcelableArrayList("data", myData);
    super.onSaveInstanceState(outState);
    }

然后才能使用这个数据----

ArrayList<String> myData = new ArrayList<String>();

@Override
   public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) 
   {
        super.onCreateView(inflater, container, savedInstanceState);

        if (savedInstanceState != null) {

            try
            {
               myData = savedInstanceState.getParcelableArrayList("data");
            }

        }

        myData.add(0, tvNotas.getText().toString());
        myData.add(1, pantalla.getText()+"");
    }