首页 > 解决方案 > 在启动 B 之前多次从活动 A 向 B 发送数据并显示所有数据发送

问题描述

我想在活动 A 上按下按钮时将数据从活动 A 发送到活动 B 而无需启动 B。这必须发生多次(多次单击按钮)并且我想存储所有信息,因此当我启动活动 B 时,我想显示我在 listView 中发送的所有项目。我在这里遇到问题,我只保存最后一次单击按钮。

这是我的活动A代码:

public class GameDetail extends AppCompatActivity implements View.OnClickListener {

    String gameTitle;
    String gamePrice;

    protected void onCreate(Bundle savedInstanceState) {
        gameTitle = getIntent().getStringExtra("GameTitle");
        gamePrice = getIntent().getStringExtra("GamePrice");


        FloatingActionButton botonAddToCart = findViewById(R.id.floatingButtonAddToCart);
        botonAddToCart.setOnClickListener(this);
    }


    @Override
    public void onClick(View v) {

        SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
        SharedPreferences.Editor editor = prefs.edit();
        editor.putString("GameTitleCart", gameTitle);
        editor.putString("GamePriceCart", gamePrice);
        editor.apply();
    }
}

和活动B代码:

public class Carrito extends AppCompatActivity {                

    List<String> gameTitle = new ArrayList<String>();           
    List<String> gamePrice = new ArrayList<String>();   

    @Override                                                 
    protected void onCreate(Bundle savedInstanceState) { 

     SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);        
     Map<String, ?> allEntries = prefs.getAll(); 
     for(Map.Entry<String, ?> entry : allEntries.entrySet()){         
         if(entry.getKey() == "GameTitleCart"){         
             gameTitle.add(entry.getValue().toString());
         }                                              
         else if (entry.getKey() == "GamePriceCart"){   
             gamePrice.add(entry.getValue().toString());
     }                                           

    MyAdapter adapter = new MyAdapter(this, gameTitle, gamePrice);            
    listView.setAdapter(adapter);               
}      

活动 A 在另一个活动触发器上启动,因此我使用 Intent 处理数据。

感谢您的帮助。

标签: android

解决方案


在活动 A 上,您可以将数据存储到一个数组中,然后当您想启动活动 B 时,只需通过 putExtra 将该数组传递给意图


推荐阅读