Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/206.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将对象从ViewHolder类发送到其他活动_Java_Android_Interface_Android Viewholder - Fatal编程技术网

Java 如何将对象从ViewHolder类发送到其他活动

Java 如何将对象从ViewHolder类发送到其他活动,java,android,interface,android-viewholder,Java,Android,Interface,Android Viewholder,因此,我想从另一个使用带有ViewHolder的recyclerView的活动向主活动发送一个对象(人),然后使用ViewHolder关闭活动并在主活动的textView上打印文本,我不知道如何将一个对象从一个视图持有者发送到另一个活动,所以我尝试使用一个界面,但我遇到了这个错误,我不知道如何修复它,也不知道原因是什么: java.lang.NullPointerException:尝试对空对象引用调用虚拟方法“java.lang.String android.content.Context.g

因此,我想从另一个使用带有ViewHolder的recyclerView的活动向主活动发送一个对象(人),然后使用ViewHolder关闭活动并在主活动的textView上打印文本,我不知道如何将一个对象从一个视图持有者发送到另一个活动,所以我尝试使用一个界面,但我遇到了这个错误,我不知道如何修复它,也不知道原因是什么:

java.lang.NullPointerException:尝试对空对象引用调用虚拟方法“java.lang.String android.content.Context.getPackageName()”

指向此行:对象从ViewHolder(selectedPerson)发送数据

视图持有者类

class PersonaViewHolder extends RecyclerView.ViewHolder{

    public Person selectedPerson;
    public ArrayList<SendData_FromViewholder> array = new ArrayList();

    public PersonaViewHolder(@NonNull View itemView) {
        super(itemView);

        ActivityMain actMain = new ActivityMain();
        this.addInterfaz(actMain);

        itemView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                selectedPerson = (Person) v.getTag();               

                for(SendData_FromViewholder obj : array){       
                    obj.SendData_FromViewholder(selectedPerson);
                }

                ((Activity_PersonList)v.getContext()).finish();     // activity of the recyclerView
            }
        });
    }

    public void addInterfaz(SendData_FromViewholder interface){
        array.add(interface);
    }
}
public interface SendData_FromViewholder {
    void getPersonFromViewholder(Person person);
}

接口类

class PersonaViewHolder extends RecyclerView.ViewHolder{

    public Person selectedPerson;
    public ArrayList<SendData_FromViewholder> array = new ArrayList();

    public PersonaViewHolder(@NonNull View itemView) {
        super(itemView);

        ActivityMain actMain = new ActivityMain();
        this.addInterfaz(actMain);

        itemView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                selectedPerson = (Person) v.getTag();               

                for(SendData_FromViewholder obj : array){       
                    obj.SendData_FromViewholder(selectedPerson);
                }

                ((Activity_PersonList)v.getContext()).finish();     // activity of the recyclerView
            }
        });
    }

    public void addInterfaz(SendData_FromViewholder interface){
        array.add(interface);
    }
}
public interface SendData_FromViewholder {
    void getPersonFromViewholder(Person person);
}


您可以将对象从视图持有者传递到活动,就像使用意图将对象从活动传递到另一个活动一样,并将对象作为可序列化的对象传递
(必须使person类实现可序列化)

ActivityMain actMain=new ActivityMain()–您不能这样做<代码>活动
类必须由系统实例化和初始化,才能正常工作。如果使用
RecyclerView
活动
是从
ActivityMain
启动的,您可以使用
startActivityForResult()
/
setResult()
将所选数据发送回
ActivityMain
;e、 例如,在这些帖子中可以看到:。