使用意图将阵列列表从一个活动传递到另一个活动时,未检查的铸造误差


public class Checkout extends AppCompatActivity {
    //ArrayList<String> stringArray = new ArrayList<>();
    ArrayList<Integer> ekdum_final_order_names = new ArrayList<>();
    Intent intent = getIntent();
     public ArrayList<Integer> intArray_id_selected;
    public ArrayList<Integer> intArray_no;
    Map<Integer ,String> linkedHashMap = new LinkedHashMap<>();
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_checkout);
        intArray_no = (ArrayList<Integer>) intent.getSerializableExtra("int_array_no");
        intArray_id_selected = (ArrayList<Integer>) intent.getSerializableExtra("int_array_id");
        Toast.makeText(getBaseContext(),intArray_id_selected.get(0)+"  "+ intArray_no.get(0),Toast.LENGTH_SHORT).show();
    }

这是使用意图从Antoher类接收阵列清单的类。我得到了不受限制的铸造警告: "Unchecked cast: 'java.io.Serializable' to 'java.util.ArrayList<android.app.Fragment>'" and due to this i get java null pointer exception.这个logcat:

引起的:java.lang.nullpointerexception:尝试调用虚拟 方法'Java.io.Serializable android.content.intent.getSerializableExtra(java.lang.string)' 空对象引用 在 com.example.gandhjee.pantry_order.checkout.oncreate(Checkout.java:39)

请帮助我找到自己的错误。任何帮助将不胜感激。谢谢。

您应该在onCreate()内调用getIntent()。由于onCreate()之后的意图可用,因此onCreate()之前存在Intent

尝试以下操作:

public class Checkout extends AppCompatActivity {
    //ArrayList<String> stringArray = new ArrayList<>();
    ArrayList<Integer> ekdum_final_order_names = new ArrayList<>();
    public ArrayList<Integer> intArray_id_selected;
    public ArrayList<Integer> intArray_no;
    Map<Integer ,String> linkedHashMap = new LinkedHashMap<>();
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_checkout);
        Intent intent = getIntent();
        intArray_no = (ArrayList<Integer>) intent.getSerializableExtra("int_array_no");
        intArray_id_selected = (ArrayList<Integer>) intent.getSerializableExtra("int_array_id");
        Toast.makeText(getBaseContext(),intArray_id_selected.get(0)+"  "+ intArray_no.get(0),Toast.LENGTH_SHORT).show();
    }

如果这不起作用,请尝试创建您的数组,并使用意图数据克隆为:

intArray_no = new ArrayList<Integer>((Integer)intent.getSerializableExtra("int_array_no");

最新更新