java - Intent.putExtra 传递空值

标签 java android arraylist

我正在尝试开发一个二维码扫描仪,我想向用户显示扫描结果的历史记录。现在,虽然扫描的数据值已正确传递到不同的 Activity ;它的问题是,即使我没有扫描 qr,空数据也会传递到下一个 Activity 的 ListView 。

我的问题是如何确保只有扫描二维码后数据才会传递到 ListView 中的下一个 Activity ?

这是我的条形码 Activity 的代码。

    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);
            }

P.S:在此之后,我将处理结果以在 AlertDialog 中显示。

我将数据发送到下一个 Activity 的部分。

 Intent data = new Intent( getApplicationContext(), History.class );
                if (listOfBarcodes!=null) {
                data.putExtra("Barcode", listOfBarcodes);
            }
                startActivity( data );

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);

除此之外,我还在 completeList.add(listOfBarcodes);

中收到警告

Unchecked call to 'add(E)' as a member of raw type 'java.util.ArrayList' less... (Ctrl+F1) Signals places where an unchecked warning is issued by the compiler, for example:

void f(HashMap map) { map.put("key", "value"); }

History.java 中,具有空值的 ListView 显示为 []。有不同的方法来传递数据还是我在这里遗漏了一些东西?

最佳答案

您必须使用putStringArrayListExtra()正如您发送的 ArrayList<String> 。首先确定列表listOfBarcodes有数据。

Intent data = new Intent( getApplicationContext(), History.class );
    if(listOfBarcodes.size()!=0)
    data.putStringArrayListExtra("Barcode",listOfBarcodes);
    startActivity(data);

历史 Activity :-

 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
    }

关于java - Intent.putExtra 传递空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49473416/

相关文章:

java - 将外部 jar 添加到 maven 本地存储库

java - 两个 Calendar 对象的小时差

java - 制作 Sprite 的 2D 网格

java - ArrayList<String> 类型中的方法 add(String) 不适用于arguments()

java - 流畅的界面与构建器模式 : Advantages and Disadvantages

java - 对多项 Activity 进行计时

android - 将 android 布局转换到另一个位置

java - 从 Double ArrayList 更改为 Integer ArrayList

java - OrcRelation不可分配给HadoopFsRelation

android - 带有边距/填充的 ListView 滚动条样式