我有MainActivity: 公共类MainActivity扩展了活动{
private ArrayList<Antrenament> listaAntr = new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Antrenament a1 = new Antrenament("forta","12/06/2019",50,"Andrei");
listaAntr.add(a1);
Button bAdd = (Button) findViewById(R.id.buttonAdd);
Button bLista = (Button) findViewById(R.id.buttonList);
bAdd.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(getApplicationContext(), AdaugareAntrenament.class);
intent.putParcelableArrayListExtra("listaant",listaAntr);
startActivityForResult(intent,1);
}
});
bLista.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(getApplicationContext(), ListaAntr.class);
intent.putParcelableArrayListExtra("listaant",listaAntr);
startActivityForResult(intent,1);
}
});
Intent intent2 = getIntent();
listaAntr = intent2.getParcelableArrayListExtra("listaantr");
}
}
我想要将对象Antrenament名称列表listaAntr的列表发送到AdaugareAntrenament活动,在这里我想创建一个新的Antrenament对象,将其添加到列表中,然后将列表发送回mainactivity。我想将这个更新后的列表从mainactivity发送到ListaAntr Activity。
AdaugareAntrenament活动:
公共类AdaugareAntrenament扩展了活动{
ArrayList<Antrenament> listaAntr1=new ArrayList<>();
//private Button add;
EditText etcateg, etdurata, etinstr,etdata;
List<String> listacateg=new ArrayList<>();
Spinner spinner;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_adaugare_antrenament);
Intent intent = getIntent();
listaAntr1 = intent.getParcelableArrayListExtra("listaant");
Button add = findViewById(R.id.buttonSave);
etdurata=findViewById(R.id.editTextDurata);
etinstr=findViewById(R.id.editTextInstructor);
etdata=findViewById(R.id.editTextData);
spinner=findViewById(R.id.spinner);
listacateg=new ArrayList<>(Arrays.asList(getResources().getStringArray(R.array.categ)));
ArrayAdapter<String> adapter=new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item,listacateg);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);
add.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String categorie,instructor,data;
int durata;
durata = Integer.parseInt(etdurata.getText().toString());
instructor = etinstr.getText().toString().trim();
data = etdata.getText().toString().trim();
categorie = spinner.getSelectedItem().toString().trim();
if(TextUtils.isEmpty(instructor)) {
etinstr.setError("Introduceti numele instructorului");
return;
}
if(TextUtils.isEmpty(data)) {
etdata.setError("Introduceti data programarii");
return;
}
Antrenament antr = new Antrenament(categorie, data, durata, instructor);
listaAntr1.add(antr);
Intent intent=new Intent(getApplicationContext(), MainActivity.class);
intent.putParcelableArrayListExtra("listaantr",listaAntr1);
}
});
}
目前,当我尝试创建Antrenament对象时遇到该错误。但这是经过一些更改的原因,因为我的代码甚至没有将更新后的列表发送回主要活动。
当前错误:
java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.util.ArrayList.add(java.lang.Object)' on a null object reference
at com.example.ancaa.rezolvarerestanta20181.AdaugareAntrenament$1.onClick(AdaugareAntrenament.java:78)
错误指向该行:
listaAntr1.add(antr);
和ListaAntr活动:
公共类ListaAntr扩展了活动{
public ArrayList<Antrenament> listaAntr = new ArrayList<>();
public ListView lv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_lista_antr);
lv = (ListView)findViewById(R.id.lista);
Intent intent = getIntent();
listaAntr = intent.getParcelableArrayListExtra("listaantr");
ArrayAdapter<Antrenament> adapter=new ArrayAdapter<Antrenament>(this,android.R.layout.simple_list_item_1,listaAntr);
lv.setAdapter(adapter);
}
}
在此,arraylist的内容应显示为列表视图。
答案 0 :(得分:0)
getParcelableArrayListExtra(String);
找不到意图中的数组并返回null
。查看documentation for the function。
从那里看起来您在MainActivity.java中做错了什么。您正在使用此行listaAntr
覆盖oncreate
中listaAntr = intent2.getParcelableArrayListExtra("listaantr");
中$('#productsForm').on('reset', function () {
$("input[type='hidden']", $(this)).val('');
});
中的信息,然后在单击时将新清空的Array传递给下一个Activity,从而引起问题。