Java 在Activity1 Frament上使用接口从Activity2检索的数据时出现问题

Java 在Activity1 Frament上使用接口从Activity2检索的数据时出现问题,java,android,android-activity,interface,fragment,Java,Android,Android Activity,Interface,Fragment,我在我的活动2上有一个编辑文本,我想在我的活动1片段中使用它。 使用接口就是我想到的: 在我的活动2中我定义并初始化了接口: private OnEditTextData OnEditTextData; 公共接口OnEditTextData{ 无效发送数据(字符串str); } 然后在onCreate中,在附加接口后,我调用EditText上的接口方法: 公共类活动2扩展了AppCompatActivity{ 私人编辑文本; 私有OnEditTextData OnEditTextData; 公

我在我的
活动2上有一个
编辑文本
,我想在我的
活动1
片段
中使用它。 使用
接口
就是我想到的:

在我的
活动2中
我定义并初始化了
接口

private OnEditTextData OnEditTextData;
公共接口OnEditTextData{
无效发送数据(字符串str);
}
然后在
onCreate
中,在附加
接口后,我调用
EditText
上的
接口
方法:

公共类活动2扩展了AppCompatActivity{
私人编辑文本;
私有OnEditTextData OnEditTextData;
公共接口OnEditTextData{
无效发送数据(字符串str);
}
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity2);
editText=findviewbyd(R.id.edit\u text);
btn_next=findviewbyd(R.id.btn_next);
btn_previous=findviewbyd(R.id.btn_previous);
btn_previous.setVisibility(View.GONE);
.
.
Fragment Fragment=新片段();
onEditTextData=片段;
btn_previous.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
.
.
}
}
});
btn_next.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
.
onEditTextData.sendEdtData(editText.getText().toString());
.    
}
}
});
.
.
}
}
现在,在我的
活动1
片段
中,我实现了
接口
,因为我想用共享首选项存储它…:

公共类片段扩展片段实现Activity2.OnEditTextData{
公共静态最终字符串PREFS\u NAME=“MyPrefsFile”;
.
.
@凌驾
公共void sendedtata(字符串str){
SharedReferences设置=this.getActivity().getSharedReferences(“MyPrefsFile”,0);
Editor=settings.edit();
编辑器.putString(“string”,str);
editor.apply();
}
}
我尝试使用
日志
检查我的字符串是否到达
片段
,它确实到达了。但是,每当我将其用于其他用途时,如共享首选项,我都会得到一个空指针错误:

java.lang.NullPointerException:尝试对空对象引用调用虚拟方法“android.content.SharedReferences androidx.fragment.app.FragmentActivity.GetSharedReferences(java.lang.String,int)”


当我试图在
列表中添加字符串时也发生了这种情况,问题不在于数据的传递,而在于您使用
android组件的方式

使用以下命令:

SharedPreferences settings = getActivity().getSharedPreferences("MyPrefsFile", 0);
而不是

 SharedPreferences settings =this.getActivity().getSharedPreferences("MyPrefsFile", 0);

发布您的活动2类plz!:)你不能仅仅创建一个片段实例并像那样存储它,当系统重新创建片段时,它最终会崩溃。你什么时候会遇到这个错误?我的意思是当你按下按钮时?是的,当我按下按钮时。@EpicPandaForce你建议做什么?@JacK'o'Lantern尝试用这个来存储你的数据SharedReferences SharedReferences=PreferenceManager.GetDefaultSharedReferences(这个);Editor=SharedReferences.edit();编辑器.putString(键、名称);editor.apply();