2017-10-07 159 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);