如何解决将信息从活动1中的EditText发送到活动2,并保存到活动2中的Recyclerview中
嗨,我想通过在Activity1中按btnsave向Activity2发送一些信息,例如名称,重量,高度,结果,然后将它们保存到Recyclerview中。我可以保存它们,但是当我发送新信息时。 。保存在以前的卡中并替换,我想每次我在Activity1中按btnsave时在RecyclerView中创建一张新卡
我在Activity1中的btnsave
btnSave.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Gson gson = new Gson();
ArrayList<Info> bmi = new ArrayList<>();
Info info = new Info(name,weight,height,result);
bmi.add(info);
SharedPreferences sharedPreferences = Activity1.this.getSharedPreferences(DB_KEY,Activity1.this.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putString(INFO,gson.toJson(bmi));
editor.commit();
Intent intent = new Intent(Activity1.this,Activity2.class);
startActivity(intent);
}
});
}
这是在Activity2中创建的
protected void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_bmi);
recyclerView = findViewById(R.id.recView);
adapter = new Adapter(this);
recyclerView.setAdapter(adapter);
recyclerView.setLayoutManager(new LinearLayoutManager(this,RecyclerView.HORIZONTAL,false));
initview();
Gson gson = new Gson();
SharedPreferences sharedPreferences = Activity2.this.getSharedPreferences(DB_KEY,Activity2.this.MODE_PRIVATE);
info = gson.fromJson(sharedPreferences.getString(INFO,null),InfoType);
adapter.setInfo(info);
if (info != null) {
view2.setVisibility(View.VISIBLE);
view1.setVisibility(View.GONE);
btnBackbmi.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent1 = new Intent(Activity2.this,Activity1.class);
startActivity(intent1);
}
});
} else {
view1.setVisibility(View.VISIBLE);
view2.setVisibility(View.GONE);
btnstart.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent1 = new Intent(Activity2.this,Activity1.class);
startActivity(intent1);
}
});
}
解决方法
我认为最好使用Bundle而不是将数据保存为共享首选项。 https://developer.android.com/guide/components/activities/parcelables-and-bundles
只需创建您的信息-实现可序列化或可打包,并将其放入捆绑包
Intent intent = new Intent(this,Activity2.class);
intent.putExtra("Info_EXTRA",new Info(name,weight,height,result));
startActivity(intent);
然后
@Override
protected void onCreate(Bundle savedInstanceState) {
Info info = (Info) getIntent().getExtras().getSerializable("Info_EXTRA");
....
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。