Java 调用方法,但代码不调用';我不能分头去
我有一些问题,我把Log.D放在某个地方,看哪一行是工作的,哪一行是不工作的。但是Java 调用方法,但代码不调用';我不能分头去,java,android,Java,Android,我有一些问题,我把Log.D放在某个地方,看哪一行是工作的,哪一行是不工作的。但是Log.d(“look”,“222222”)不起作用 我有一个fill()方法。我在onCreate()方法中调用这个方法 protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_product_screen);
Log.d(“look”,“222222”)代码>不起作用
我有一个fill()
方法。我在onCreate()
方法中调用这个方法
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_product_screen);
Log.d("look","00000000000000000");
fill(typeC);
Log.d("look","444444444444444444");
}
让我们看看fill()
方法的实现
private void search(final String [] list) {
Log.d("look","1111111111111111111");
for(int i =0;i<list.length;i++){
DatabaseReference fd = mDatabase.child(list[i]);
fd.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
Iterable<DataSnapshot> snapshotIterable = dataSnapshot.getChildren() ;
Iterator<DataSnapshot> iterator = snapshotIterable.iterator();
while (iterator.hasNext()) {
DataSnapshot dataSnapshot1 = iterator.next();
Product product = dataSnapshot1.getValue(Product.class);
Log.d("look","222222222222222222222222");
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
Log.d("look","333333333333333333333333");
}
}
你可以看到没有D/look:22222
。为什么该行不起作用?如果该行从未执行过,则表示您没有进入while循环。这意味着迭代器没有next。可能是因为snapshotIterable没有子项。dataSnapshot
可能没有子项,这就是迭代器为空的原因,这导致在执行
时没有执行
D/look: 00000000000000000
D/look: 1111111111111111111
D/look: 333333333333333333333333
D/look: 333333333333333333333333
D/look: 333333333333333333333333
D/look: 444444444444444444