簡體   English   中英

無法通過意圖將數組列表從一個活動傳遞到另一個活動

[英]Unable to pass array list from one activity to another through intent

我有一個String ArrayList,我需要傳遞給另一個活動。 我正打算這樣做。 但是,在目標活動中獲取ArrayList時,它為空。 我已經嘗試通過捆綁以及putStringArrayList

第一次活動

final ArrayList<String> subtaskArray=new ArrayList<>();
final ArrayList<String> subtaskStatusArray=new ArrayList<>();
final DatabaseReference subNode=parentNode.child("subtask");
holder.noteCard.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        subNode.addValueEventListener(new ValueEventListener () {
            @Override
            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                for (DataSnapshot d: dataSnapshot.getChildren())
                {
                    subtaskDesc = d.child("SubtaskDescription").getValue().toString();
                    subtaskStatus = d.child("done").getValue().toString();
                    subtaskArray.add(subtaskDesc);
                    subtaskStatusArray.add(subtaskStatus);
                }
            }
            @Override
            public void onCancelled(@NonNull DatabaseError databaseError) {

            }
        });
        Intent intent = new Intent(Main2Activity.this, Checklist.class);
//intent.putStringArrayListExtra("subtaskDesc",subtaskArray);
//intent.putStringArrayListExtra("subtaskStatus",subtaskStatusArray);                                       Bundle b=new Bundle();
        b.putStringArrayList("subtaskDesc", subtaskArray);
        intent.putExtras(b);
        intent.putExtra("noteid", noteid);
        intent.putExtra("Checklist_title", title);
        intent.putExtra("flag", true);
        startActivity(intent);
    }
});
}

檢索第二個活動:

try{
    noteid=getIntent().getStringExtra("noteid");
    displayflag=getIntent().getBooleanExtra("flag",false);
    //fetchList=  getIntent().getStringArrayListExtra("subtaskDesc");
    Bundle b=this.getIntent().getExtras();
    fetchList = b.getStringArrayList("subtaskDesc");
    Toast.makeText(this,""+fetchList.size(),Toast.LENGTH_SHORT).show();
}
catch (Exception e){
    e.printStackTrace();
}

吐司顯示數組列表的大小為0。

首先,您需要將代碼重構為此-

  protected void onCreate(@Nullable Bundle savedInstanceState, int resId) {
            super.onCreate(savedInstanceState);
            //here you need to addValeEventListener, like this
subNode.addValueEventListener(new ValueEventListener () {
            @Override
            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                for (DataSnapshot d: dataSnapshot.getChildren())
                {
                    subtaskDesc = d.child("SubtaskDescription").getValue().toString();
                    subtaskStatus = d.child("done").getValue().toString();
                    subtaskArray.add(subtaskDesc);
                    subtaskStatusArray.add(subtaskStatus);
                }
            }
            @Override
            public void onCancelled(@NonNull DatabaseError databaseError) {

            }
        });
     }

然后,setOnClickListener

holder.noteCard.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        Intent intent = new Intent(Main2Activity.this, Checklist.class);
//intent.putStringArrayListExtra("subtaskDesc",subtaskArray);
//intent.putStringArrayListExtra("subtaskStatus",subtaskStatusArray);                                       Bundle b=new Bundle();
        b.putStringArrayList("subtaskDesc", subtaskArray);
        intent.putExtras(b);
        intent.putExtra("noteid", noteid);
        intent.putExtra("Checklist_title", title);
        intent.putExtra("flag", true);
        startActivity(intent);
    }
});
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM