【问题标题】:How to pass collection between Activities in android如何在android中的Activity之间传递集合
【发布时间】:2014-05-25 03:17:48
【问题描述】:

我要做什么::

  • 我正在尝试将集合从一个活动传递到另一个活动并在日志中显示收到的集合
  • 我知道这可以使用意图来实现,所以我正在使用它们

我不能做什么::

  • 如何在Screen1.java 中接收hashmap 在日志中显示它

MainActivity.java

public class MainActivity extends Activity implements OnClickListener{

    HashMap<String, String> objColl;
    Button btn;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        objColl=new HashMap<String, String>();
        objColl.put("1", "USA");
        objColl.put("2", "Canada");
        objColl.put("3", "Africa");
        objColl.put("4", "England");

        btn=(Button) findViewById(R.id.button1);

        btn.setOnClickListener(this);

    }

    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub

        switch(v.getId())
        {
        case R.id.button1:
            Intent intent=new Intent(MainActivity.this,Screen1.class);
            intent.putExtra("key1", objColl);
            startActivity(intent);
            break;
        }   
    }
}

Screen1.java

public class Screen1 extends Activity {

    HashMap<String, String> objColl;
    TextView txtVw;
    String res;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        txtVw=(TextView) findViewById(R.id.textView1);
    }

    @Override
    protected void onStart() {
        // TODO Auto-generated method stub
        super.onStart();

    }
}

日志::

【问题讨论】:

标签: java android android-intent


【解决方案1】:

发件人活动:

HashMap<String, String> hashMap= ....
Intent intent = new Intent(SourceActivity.this, DestinationActivity.class);
intent.putExtra("hashMap", hashMap);
startActivity(intent);

接收者活动:

Intent intent = getIntent();    
HashMap<String, String> hashMap = (HashMap<String, String>) intent.getSerializableExtra("hashMap");

【讨论】:

    【解决方案2】:

    获取使用 Bundle 所需的 Extras

    Intent mIntent = getIntent();
            if(mIntent != null){
                Bundle mBudle = mIntent.getExtras();
                HashMap<String, String> mMap = (HashMap<String, String>) mBudle.get("key1");
            }
    

    【讨论】:

      【解决方案3】:

      使用 bundle 将集合传递给意图-

      Bundle extras = new Bundle();
      extras.putSerializable("HashMap",Hash_Map);
      intent.putExtras(extras);
      

      &在其他活动中-

      Bundle bundle = this.getIntent().getExtras();
       if(bundle!=null){
         Hash_Map= bundle.getSerializable("HashMap");
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-01-29
        • 1970-01-01
        • 1970-01-01
        • 2011-05-15
        • 1970-01-01
        • 1970-01-01
        • 2021-10-13
        • 2019-01-12
        相关资源
        最近更新 更多