Java 在Android中更改活动时如何保持ArrayList?
这是我向TambahDataEstimasi发送数据的活动:Java 在Android中更改活动时如何保持ArrayList?,java,android,Java,Android,这是我向TambahDataEstimasi发送数据的活动: private void tambahdataEstimasi(String string) { dialogCustom = new AlertDialog.Builder(PartActivity.this); dialogCustom.setCancelable(true); dialogCustom.setIcon(R.drawable.ic_file); dialogCustom.s
private void tambahdataEstimasi(String string) {
dialogCustom = new AlertDialog.Builder(PartActivity.this);
dialogCustom.setCancelable(true);
dialogCustom.setIcon(R.drawable.ic_file);
dialogCustom.setTitle("Tambah Data Estimasi");
dialogCustom.setMessage("Apakah Anda Ingin Menambahkan Data : \n" + string + " Ke Daftar Estimasi?");
dialogCustom.setPositiveButton("Ya", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Intent intent = new Intent(PartActivity.this, TambahEstimasi.class);
intent.putParcelableArrayListExtra("dataestimasi", adapter.checkedPart);
startActivity(intent);
}
});
dialogCustom.setNegativeButton("Tidak", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
adapter.checkedPart.clear();
}
});
dialogCustom.show();
}
public class TambahEstimasi extends AppCompatActivity {
ArrayList<ModelPart> listEstimasi = new ArrayList<>();
ModelPart part ;
ArrayList<ModelPart> estimasiPart = new ArrayList<>();
private RecyclerView mRecyclerView;
private Context context;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_tambah_estimasi);
mRecyclerView = (RecyclerView) findViewById(R.id.cardView_estimasi);
Intent intent = this.getIntent();
listEstimasi = intent.getParcelableArrayListExtra("dataestimasi");
System.out.println("data Intent : " + listEstimasi.size());
for (int i=0; i<listEstimasi.size(); i++) {
part = listEstimasi.get(i);
String nomor = part.getNomorPart().toString();
System.out.println("Isi data Intent : " + nomor);
}
这是我的TambahDataEstimasi,用于从上一个活动获取数据:
private void tambahdataEstimasi(String string) {
dialogCustom = new AlertDialog.Builder(PartActivity.this);
dialogCustom.setCancelable(true);
dialogCustom.setIcon(R.drawable.ic_file);
dialogCustom.setTitle("Tambah Data Estimasi");
dialogCustom.setMessage("Apakah Anda Ingin Menambahkan Data : \n" + string + " Ke Daftar Estimasi?");
dialogCustom.setPositiveButton("Ya", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Intent intent = new Intent(PartActivity.this, TambahEstimasi.class);
intent.putParcelableArrayListExtra("dataestimasi", adapter.checkedPart);
startActivity(intent);
}
});
dialogCustom.setNegativeButton("Tidak", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
adapter.checkedPart.clear();
}
});
dialogCustom.show();
}
public class TambahEstimasi extends AppCompatActivity {
ArrayList<ModelPart> listEstimasi = new ArrayList<>();
ModelPart part ;
ArrayList<ModelPart> estimasiPart = new ArrayList<>();
private RecyclerView mRecyclerView;
private Context context;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_tambah_estimasi);
mRecyclerView = (RecyclerView) findViewById(R.id.cardView_estimasi);
Intent intent = this.getIntent();
listEstimasi = intent.getParcelableArrayListExtra("dataestimasi");
System.out.println("data Intent : " + listEstimasi.size());
for (int i=0; i<listEstimasi.size(); i++) {
part = listEstimasi.get(i);
String nomor = part.getNomorPart().toString();
System.out.println("Isi data Intent : " + nomor);
}
公共类TambahEstimasi扩展应用程序活动{
ArrayList ListInstasi=新建ArrayList();
模型部分;
ArrayList estimasiPart=新的ArrayList();
私人回收视图mRecyclerView;
私人语境;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_tambah_estimasi);
mRecyclerView=(RecyclerView)findViewById(R.id.cardwiew_estimasi);
Intent=this.getIntent();
listEstimasi=intent.getParcelableArrayListExtra(“数据估计”);
System.out.println(“数据意图:+listEstimasi.size());
对于(int i=0;i当您通过按后退按钮或调用finish返回到上一个活动时,该活动将被销毁,数据将不再保留。如果您想保留yoir数据,yoi可以使用多种技术。在活动中使用onSaveInstanceState方法来保存状态
@覆盖
SaveInstanceState上受保护的无效(束超出状态){
super.onSaveInstanceState(超出状态);
外置的putParcelableArray(数组,“key”);
}
返回活动后,请在RestoreInstanceState方法上恢复状态
@覆盖
RestoreInstanceState上的受保护无效(Bundle savedInstanceState){
super.onRestoreInstanceState(savedInstanceState);
savedInstanceState.getParcelableArray(“键”);
}
阵列必须包含实现Parcelable接口的项。您可以选择在ModelPart类中实现该接口,也可以使用名为Parceler的第三方库。为此,您可以使用SharedReferences
public <T> void putList(String key, List<T> list) {
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putString(key, gson.toJson(list));
editor.apply();
}
public <T> List<T> getList(String key, Class<T> clazz) {
Type typeOfT = TypeToken.getParameterized(List.class, clazz).getType();
return gson.fromJson(getString(key, null), typeOfT);
}
然后,当您想要检索时:
List<User> userList = prerManager.getList(PrefManager.Key.USER_LIST, User.class);
List userList=prermager.getList(PrefManager.Key.USER\u List,USER.class);
从以文本而不是屏幕截图的形式发布代码。我已经编辑过eDi got eror,我可以在哪里放置两种方法?发布错误,您应该将方法放在第一个活动中(您希望保存数据的活动中)为什么我不能在此处发布图像?您应该共享一个存储库以查看您的代码