Java intent.putExtra传递空值

Java intent.putExtra传递空值,java,android,arraylist,Java,Android,Arraylist,我正在尝试开发一个qr扫描仪,在这里我想向用户显示扫描结果的历史记录。现在,尽管扫描的数据值被正确地传递给不同的活动;问题是,即使我没有扫描qr,空数据也会传递到下一个活动的listview Intent data = new Intent( getApplicationContext(), History.class ); if (listOfBarcodes!=null) { data.putExtra("Barcode",

我正在尝试开发一个qr扫描仪,在这里我想向用户显示扫描结果的历史记录。现在,尽管扫描的数据值被正确地传递给不同的活动;问题是,即使我没有扫描qr,空数据也会传递到下一个活动的listview

 Intent data = new Intent( getApplicationContext(), History.class );
                if (listOfBarcodes!=null) {
                data.putExtra("Barcode", listOfBarcodes);
            }
                startActivity( data );
我的问题是,如何确保仅在扫描qr时,数据才会传递到listview中的下一个活动?

这是我的条形码活动的代码

    public class MainActivity extends AppCompatActivity implements ZXingScannerView.ResultHandler {
//Initialization
    private static final int REQUEST_CAMERA = 1;
    private ZXingScannerView mScannerView;
    ArrayList<String> listOfBarcodes = new ArrayList<String>();

//This is the part where I handle the result

     @Override
        public void handleResult(Result rawResult) {

            final String result = rawResult.getText();
            if(!result.isEmpty()) {
                //whenever you capture a new barcode add it to this list
                listOfBarcodes.add(result);
            }
History.java

public class History extends AppCompatActivity {
public static final ArrayList completeList = new ArrayList<String>();
TextView textView;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_history);
        textView = findViewById(R.id.text_view);
        Intent callingIntent= getIntent();
        ArrayList<String> listOfBarcodes = callingIntent.getExtras().getStringArrayList("Barcode");
        completeList.add(listOfBarcodes);
        ArrayAdapter<String> aA = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, completeList);
        ListView lv = (ListView) findViewById(R.id.my_list_id);
        lv.setAdapter(aA);
公共类历史记录扩展了AppCompative活动{
public static final ArrayList completeList=new ArrayList();
文本视图文本视图;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_history);
textView=findViewById(R.id.text\u视图);
Intent callingcontent=getIntent();
ArrayList listOfBarcodes=CallingContent.getExtras().getStringArrayList(“条形码”);
completeList.add(节点列表);
ArrayAdapter aA=新的ArrayAdapter(这是android.R.layout.simple\u list\u item\u 1,completeList);
ListView lv=(ListView)findViewById(R.id.my\u list\u id);
低压设置适配器(aA);
除此之外,我在
completeList.add(listOfBarcodes);

未选中调用“添加(E)”作为原始类型的成员 “java.util.ArrayList”less…(Ctrl+F1)表示 未选中的警告由编译器发出,例如:

void f(HashMap映射){ map.put(“键”、“值”);}


History.java
中,具有空值的listview显示为[]。是否有其他方法传递数据,或者我在这里遗漏了什么?

在发送
ArrayList
时,必须使用
putStringArrayListExtra()
。首先确保list
listOfBarcodes
包含数据

Intent data = new Intent( getApplicationContext(), History.class );
    if(listOfBarcodes.size()!=0)
    data.putStringArrayListExtra("Barcode",listOfBarcodes);
    startActivity(data);
在历史活动中:-

 ListView lv = (ListView) findViewById(R.id.my_list_id);
    Intent callingIntent= getIntent();
    if(callingIntent.hasExtra("Barcode")) {
        ArrayList<String> listOfBarcodes = callingIntent.getStringArrayListExtra("Barcode");
        completeList.addAll(listOfBarcodes);
        ArrayAdapter<String> aA = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, completeList);
        lv.setAdapter(aA);
    }else{
        // No scanned handle here
    }
ListView lv=(ListView)findViewById(R.id.my\u list\u id);
Intent callingcontent=getIntent();
如果(CallingContent.hasExtra(“条形码”)){
ArrayList listOfBarcodes=CallingContent.getStringArrayListExtra(“条形码”);
completeList.addAll(节点列表);
ArrayAdapter aA=新的ArrayAdapter(这是android.R.layout.simple\u list\u item\u 1,completeList);
低压设置适配器(aA);
}否则{
//这里没有扫描手柄
}

在从intent获取数组值之前,是否尝试创建条件?intent.hasExtra(字符串名称)。@RobertBanyai我尝试过。问题不在于传递数据。它添加了一个空值“[]”如果它没有扫描任何内容,则输入listview。感谢您的建议。尝试过。不管我在问题中说了什么,数据都会被传递。不过,问题是它每次都以[]的形式发送空StringArray如果扫描器未扫描任何内容,则将其输入listview。这是可能的行为。如果扫描器未扫描任何内容,则列表将为空,并将其传递为空。这里的要点是什么?要点是当我将其记录到listview时,值[]添加到列表视图中。哦,感谢它确实处理了空字符串的问题。但是警告仍然存在。请参考问题。确定如何声明
completeList
?它应为
ArrayList completeList