繁体   English   中英

如何传递和检索ArrayList <Integer> 在两个意图之间

[英]How to pass and retrieve ArrayList<Integer> between two Intents

这是我的第一个活动

ArrayList<Integer> deletedPositions = new ArrayList<>();
.
.
.
deletedPositions.add(2);
Log.d("Deleted Position is: ", " " + deletedPositions);
// I can see 2 in my Log


public void onBackPressed(){
        super.onBackPressed();
        Log.e("----------------->", "Back Pressed");
        Intent intent=new Intent();
        intent.putExtra("isdeleted",true);
        intent.putExtra("pos",deletedPositions);
        setResult(2,intent);
        finish();
    }

这是我的接收活动

@Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data)
    {
        Log.d("----------->","onActivityResult Called " + requestCode + " " + requestCode + " " + data);
        super.onActivityResult(requestCode, resultCode, data);
       if(requestCode==2 && data != null)
      {
            ArrayList<Integer> positionsToBeRemoved = data.getIntegerArrayListExtra("pos");

但是我在应该为2的数据中得到了空值,我在哪里做错了? 谢谢

试试这个可能对您有帮助

ArrayList<Integer> deletedPositions = new ArrayList<>();
Intent intent=new Intent();
intent.putExtra("isdeleted",true);
intent.putIntegerArrayListExtra("pos",deletedPositions);
setResult(2,intent);

并得到像

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
   Log.d("----------->","onActivityResult Called " + requestCode + " " + requestCode + " " + data);
   super.onActivityResult(requestCode, resultCode, data);
   if(requestCode==2 && data != null)
   {
       ArrayList<Integer> positionsToBeRemoved = data.getExtras().getIntegerArrayList("pos");

   }

删除super.onBackPressed(); 行中的onBackPressed方法并检查。

第一次活动

public class MainActivity extends AppCompatActivity
{

    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


        startActivityForResult(new Intent(this, Main2Activity.class), 100);
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data)
    {
        super.onActivityResult(requestCode, resultCode, data);

        if (requestCode==100 && resultCode==100 && data!=null)
        {
            System.out.println("pos "+data.getExtras().getIntegerArrayList("pos"));


        }
    }
}

第二次活动

public class Main2Activity extends AppCompatActivity
{
    ArrayList<Integer> mDeletedPosLst;

    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main2);

        mDeletedPosLst = new ArrayList<>();

        mDeletedPosLst.add(1);
        mDeletedPosLst.add(3);
        mDeletedPosLst.add(5);
        mDeletedPosLst.add(6);
    }

    @Override
    public void onBackPressed()
    {
        //super.onBackPressed();

        Intent intent=new Intent();
        intent.putExtra("isdeleted",true);
        intent.putExtra("pos",mDeletedPosLst);
        setResult(100,intent);
        finish();
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM