Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/217.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 在Android中更改活动时如何保持ArrayList?_Java_Android - Fatal编程技术网

Java 在Android中更改活动时如何保持ArrayList?

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

这是我向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);
    }
这是我的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,我可以在哪里放置两种方法?发布错误,您应该将方法放在第一个活动中(您希望保存数据的活动中)为什么我不能在此处发布图像?您应该共享一个存储库以查看您的代码