android - Parcelable with arraylist<string> 将值从 Activity 传递到 fragment android

标签 android android-fragments arraylist parcelable

我需要将数组列表值从 fragment 发送到 Activity 。我尝试了很少的代码,但返回值为 null。任何有关 arraylist<string> 的 parcelable 代码或教程的帮助将值从 Activity 传递到 fragment 。

这是我传递 arraylist 的代码:

Intent intent = getIntent();
intent.putExtra("key", selectImages);
setResult(RESULT_OK, intent);
 finish();      

这是 Myparcelable 类代码:

import java.util.ArrayList;
import android.os.Parcel;
import android.os.Parcelable;

public class ObjectA implements Parcelable {

    public ArrayList<String> choices;

   public ObjectA (ArrayList<String> choices) {
             this.choices = choices;
    }
  @SuppressWarnings("unchecked")
    public ObjectA (Parcel parcel) {
          parcel.readArrayList(null);
    }

    @Override
    public int describeContents() {
        return 0;
    }

    @Override
    public void writeToParcel(Parcel dest, int flags) {
         dest.writeStringList(choices);
    }

    // Method to recreate a ObjectA from a Parcel
    public static Creator<ObjectA> CREATOR = new Creator<ObjectA>() {

        @Override
        public ObjectA createFromParcel(Parcel source) {
            return new ObjectA(source);
        }

        @Override
        public ObjectA[] newArray(int size) {
            return new ObjectA[size];
        }
    };    
    }

这是用于提取 fragment 的代码(使其显示只是为了检查值):

    ArrayList<String> ar1 =  getActivity().getIntent().getParcelableExtra("key");
    Toast.makeText(getActivity(),
                    "Path of array in home Fragment: "+ar1,
                    Toast.LENGTH_LONG).show();

当我运行代码时,ar1 的返回值为 null。我在哪里犯错了?

谢谢,

最佳答案

    public void onActivityResult(int requestCode, int resultCode, Intent data){
            if (requestCode == 999) {           
                @SuppressWarnings("unchecked")
                ArrayList<String> ar1 =  data.getStringArrayListExtra("key"); 
                if(ar1.size()!= 0){
                for (int i = 0; i < ar1.size(); i++) {
                    String value = ar1.get(i);
                    Toast.makeText(getActivity(),
                            "Path of array in home Fragment: "+ar1,
                            Toast.LENGTH_LONG).show();
    }       }      }     }

错过了这一行:ArrayList<String> ar1 = data.getStringArrayListExtra("key"); 谢谢你的帮助

关于android - Parcelable with arraylist<string> 将值从 Activity 传递到 fragment android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27717977/

相关文章:

android - 如何在不更新应用程序的情况下重新加载 Cordova 应用程序的 UI

android - 未显示使用 uri 作为源的图像

java - Android 阻止 onPause 在父类中被调用

java - Java中基于唯一集的List Integer元素创建 "ordinal"簇

java - 为什么我的方法没有清除 ArrayList?

java - 如何根据属性找出两个数组列表之间的差异?

android - Worklight 6.1 JSONStore 调用 WL.JSONStore.init 在 Android 中挂起

复合 View 中的android双布局对象

android - 在服务和 Activity 之间共享数据的最有效方式

java - 从缓存中恢复图片时android OutOfMemoryError