2017-10-07 114 views
-3

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

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

        } 
       }); 
      } 
     } 
    } 
} 
+0

移动使得Android应用程序之前,你应该学会基本的编程,然后用它尝试和学习OS哲学,生成有关应用程序上下文发展。总之,这件事情不适合你这一刻。这是一个漫长的旅程,你不应该跳过这段路。祝你好运。 –

回答

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

声明变量之前的for循环,这样就可以在循环之后使用它。

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