簡體   English   中英

如何將 ArrayLists 傳遞給另一個活動,對其進行修改,然后返回使用?

[英]How do I pass ArrayLists to another activity, modify it, and return it back to use?

我正在嘗試創建項目的登錄/注冊部分,但在將注冊信息傳遞回登錄活動時遇到了麻煩。 我在MainActivity中初始化了username_info、password_info和name_info,想通過Intent發送給SignUpActivity。

        Intent i = new Intent(this, SignUpActivity.class);
        i.putExtra("username_info", username_info);
        i.putExtra("password_info", password_info);
        i.putExtra("name_info", name_info);
        startActivityForResult(i, 101);

在另一個活動中添加值后,它會像這樣被發送回來(數組列表在兩個活動中具有相同的名稱):

        Intent r = new Intent();
        r.putExtra("username_info", username_info);
        r.putExtra("password_info", password_info);
        r.putExtra("name_info", name_info);
        setResult(Activity.RESULT_OK, r);
        finish();
    }

它在這里收到:

    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (requestCode == 101) {
            if (resultCode == Activity.RESULT_OK) {
                Bundle e = getIntent().getExtras();
                username_info = e.getStringArrayList("username_info");
                password_info = e.getStringArrayList("password_info");
                name_info = e.getStringArrayList("name_info");
            }
        }
    }

但是當我回到 MainActivity 時,數組列表沒有改變。 我是 Android Studio 的新手,所以我可能只是犯了一個簡單的錯誤。

編輯:當用戶名和密碼不匹配時我崩潰了,但它應該返回一個 toast 代替:

@Override
            public void onClick(View v) {
                username = username_input.getText().toString();
                password = password_input.getText().toString();
                int index = username_info.indexOf(username);

                if (username_info.size() < 1) {
                    Toast.makeText(MainActivity.this, "You must sign up first", Toast.LENGTH_SHORT).show();
                }
                else if (password_info.get(index).equals(password)) {
                    Toast.makeText(MainActivity.this, "make an activity", Toast.LENGTH_SHORT).show();
                        // open activity
                }
                else {
                    Toast.makeText(MainActivity.this, "Incorrect username/password", Toast.LENGTH_SHORT).show();
                }
            }
        });

不要在onActivityResult中使用getIntent() ,而是使用Intent data

    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (requestCode == 101) {
            if (resultCode == Activity.RESULT_OK) {
                Bundle e = data.getExtras();
                username_info = e.getStringArrayList("username_info");
                password_info = e.getStringArrayList("password_info");
                name_info = e.getStringArrayList("name_info");
            }
        }
    }

我如何通過 ArrayList<object> 從一個活動到另一個活動<div id="text_translate"><p>我想將 Object 的 ArrayList 從一個活動傳遞到另一個活動。</p><p> 這是示例代碼:</p><pre> { ArrayList&lt;object&gt; list=new ArrayList&lt;&gt;(); Object value[]=new Object[m.size()]; int n=0; value[]=new Object[n]; value[n]=data.getName("name"); value[n]=data.getLocation("location"); list.add(value[n]); n++; //Since there are "n" number of object } //here the value a which is ArrayList Object // which I want to pass it from here to another activity.</pre><p> 那么現在我將如何將 object 從這里傳遞給另一個活動。 <strong>但是</strong>,我可以使用<strong>Gson</strong>獲得值。 通過將值轉換為<strong>json</strong>並將其作為字符串傳遞給<strong>SharedPreference</strong>並從另一個活動中檢索,然后使用<strong>類型</strong>從<strong>Json</strong>轉換回來以支持其原始形式。</p><p> 我想知道是否可以使用<strong>Parceable</strong>傳遞值。 因為我在使用它時得到了 null 值。</p><p> 這是我試圖使我的 Object 變量 Parceable 的代碼:</p><pre> public class ProductList implements Parcelable { private String NAME; private String LOCATION; public ProductList() { } protected ProductList(Parcel in) { LOCATION= in.readString(); NAME= in.readString(); } public static final Creator&lt;ProductList&gt; CREATOR = new Creator&lt;ProductList&gt;() { @Override public ProductList createFromParcel(Parcel in) { return new ProductList(in); } @Override public ProductList[] newArray(int size) { return new ProductList[size]; } }; public String getNAME() { return NAME; } public void setNAME(String NAME) { this.NAME= NAME; } public String getLOCATION() { return LOCATION; } public void setITEM_IMAGE(String LOCATION) { this.LOCATION= LOCATION; } @Override public int describeContents() { return 0; } @Override public void writeToParcel(Parcel dest, int flags) { dest.writeString(NAME); dest.writeString(LOCATION); } }</pre></div></object>

[英]How do I pass ArrayList<Object> from one Activity to another Activity

暫無
暫無

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

相關問題 如何返回 object Arraylists 數組 如何從DialogFragment / DatePickerFragment將日期傳遞回活動? 如何將命令傳遞給另一個活動的組件? 如何將用戶名傳遞給 Android Studio 中的另一個活動 如何將u_id值傳遞給另一個活動? 如何使用意圖將ArrayList傳遞給另一個Activity? 我如何通過 ArrayList<object> 從一個活動到另一個活動<div id="text_translate"><p>我想將 Object 的 ArrayList 從一個活動傳遞到另一個活動。</p><p> 這是示例代碼:</p><pre> { ArrayList&lt;object&gt; list=new ArrayList&lt;&gt;(); Object value[]=new Object[m.size()]; int n=0; value[]=new Object[n]; value[n]=data.getName("name"); value[n]=data.getLocation("location"); list.add(value[n]); n++; //Since there are "n" number of object } //here the value a which is ArrayList Object // which I want to pass it from here to another activity.</pre><p> 那么現在我將如何將 object 從這里傳遞給另一個活動。 <strong>但是</strong>,我可以使用<strong>Gson</strong>獲得值。 通過將值轉換為<strong>json</strong>並將其作為字符串傳遞給<strong>SharedPreference</strong>並從另一個活動中檢索,然后使用<strong>類型</strong>從<strong>Json</strong>轉換回來以支持其原始形式。</p><p> 我想知道是否可以使用<strong>Parceable</strong>傳遞值。 因為我在使用它時得到了 null 值。</p><p> 這是我試圖使我的 Object 變量 Parceable 的代碼:</p><pre> public class ProductList implements Parcelable { private String NAME; private String LOCATION; public ProductList() { } protected ProductList(Parcel in) { LOCATION= in.readString(); NAME= in.readString(); } public static final Creator&lt;ProductList&gt; CREATOR = new Creator&lt;ProductList&gt;() { @Override public ProductList createFromParcel(Parcel in) { return new ProductList(in); } @Override public ProductList[] newArray(int size) { return new ProductList[size]; } }; public String getNAME() { return NAME; } public void setNAME(String NAME) { this.NAME= NAME; } public String getLOCATION() { return LOCATION; } public void setITEM_IMAGE(String LOCATION) { this.LOCATION= LOCATION; } @Override public int describeContents() { return 0; } @Override public void writeToParcel(Parcel dest, int flags) { dest.writeString(NAME); dest.writeString(LOCATION); } }</pre></div></object> 如何在單獨的活動中從一個活動修改ArrayList 如何將活動移動到另一個活動? 動畫:訪問其他活動並回來后如何重復播放動畫?
 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM