我在试着用for
换个ID。我有一个不同的is为每张卡的CardView,我想获得数据时,点击。
我已经这样做了:
public void setToggleEvent(final GridLayout mainGrid) {
for ( int i = 0; i < mainGrid.getChildCount(); i++){
count = i;
final CardView cardView = (CardView)mainGrid.getChildAt(i);
cardView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if(cardView.getCardBackgroundColor().getDefaultColor() == -1) {
for (int f = 0; f < mainGrid.getChildCount(); f++){
if (f == count) {
int index = f;
String idFood = "food" + index;
int resID = getResources().getIdentifier(idFood, "id", getPackageName());
foodName = findViewById(resID);
foodName.getText();
}
}
//canvi color de fons
cardView.setCardBackgroundColor(Color.parseColor("#FF6F00"));
foodData = foodName.toString();
selectedVegetables.add(foodData);
} else {
cardView.setBackgroundColor(Color.parseColor("#FFFFFF"));
Toast.makeText(VegetablesActivity.this, "Food Selected", Toast.LENGTH_SHORT).show();
}
}
});
}
}
每一张卡都有一个ID : food0,food1,food2....
正如您在代码中看到的,我这样做是为了获取ID:
String idFood = "food" + index;
int resID = getResources().getIdentifier(idFood, "id", getPackageName());
foodName = findViewById(resID);
foodName.getText();
然后:
foodData = foodName.toString();
selectedVegetables.add(foodData);
但是当我运行它时,它告诉我foodName
是空的( java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.CharSequence android.widget.TextView.getText()' on a null object reference
)
并且在这一行错误出现的地方
foodName.getText();
有什么想法吗?很抱歉我的英文不好,这不是我的母语长度,希望大家能理解。
发布于 2018-06-01 03:10:55
我很惊讶!这实际上不符合逻辑!
foodName = findViewById(resID);
int resID
不会像这样提供给你:"R.id.exampleId“类型的id。
resID仅为您提供整数值。
https://stackoverflow.com/questions/50631055
复制相似问题