如何使用已在for循环中初始化的变量?

时间:2017-10-07 03:50:25

标签: java android for-loop

我是Android工作室的初学者。如果我犯了任何错误,请原谅我! 我试图在for循环之外使用变量String myKey,以便Intent也不会在for循环中循环。我试图移动For循环外面的蓝色代码,但由于String myKey,我无法这样做!任何帮助将不胜感激

enter image description here

这是我的代码

 protected final void onActivityResult(int requestCode, int resultCode, final Intent data) {
    if (requestCode == BARCODE_READER_REQUEST_CODE) {
        if (resultCode == CommonStatusCodes.SUCCESS) {
            if (data != null) {
                final Barcode barcode = data.getParcelableExtra(BarcodeCaptureActivity.BarcodeObject);
                Point[] p = barcode.cornerPoints;
                 database.orderByChild("barcode").equalTo(barcode.displayValue).addValueEventListener(new ValueEventListener() {
                    @Override
                    public void onDataChange(final DataSnapshot dataSnapshot) {
                        for (DataSnapshot objSnapshot : dataSnapshot.getChildren()) {
                            String myKey = objSnapshot.getKey();
                            Toast.makeText(Inventory.this, myKey, Toast.LENGTH_SHORT).show();

                             Intent intent = new Intent(Inventory.this,Edit.class);
                             intent.putExtra("value", myKey);
                             startActivity(intent);

                        }

                    }


                    @Override
                    public void onCancelled(DatabaseError databaseError) {

                    }
                });
            }
        }
    }
}

2 个答案:

答案 0 :(得分:3)

在循环之前以全局方式声明变量。

protected final void onActivityResult(int requestCode, int resultCode, final Intent data) {
if (requestCode == BARCODE_READER_REQUEST_CODE) {
    if (resultCode == CommonStatusCodes.SUCCESS) {
        if (data != null) {
            String myKey="";
            final Barcode barcode = data.getParcelableExtra(BarcodeCaptureActivity.BarcodeObject);
            Point[] p = barcode.cornerPoints;
             database.orderByChild("barcode").equalTo(barcode.displayValue).addValueEventListener(new ValueEventListener() {
                @Override
                public void onDataChange(final DataSnapshot dataSnapshot) {
                    for (DataSnapshot objSnapshot : dataSnapshot.getChildren()) {
                        myKey = objSnapshot.getKey();
                        Toast.makeText(Inventory.this, myKey, Toast.LENGTH_SHORT).show();



                    }
                   Intent intent = new Intent(Inventory.this,Edit.class);
                   intent.putExtra("value", myKey);
                   startActivity(intent);

                }


                @Override
                public void onCancelled(DatabaseError databaseError) {

                }
            });
        }
    }
}
}

希望这有助于你...如果你需要任何帮助,你可以问

答案 1 :(得分:1)

在for循环之前声明变量,以便在循环之后使用它。

String myKey = null;
for (/**/){
    ...
    //update myKey
    myKey = objSnapshot.getKey();
}
//use myKey
intent.putExtra("value", myKey);