我有一个按钮,当我点击它时,弹出窗口显示其中包含4个按钮。 根据用户在弹出窗口中单击的按钮,弹出触发按钮将自动更新。但是我在下面的代码中遇到了一个无法获取getId()的问题。
public void pressCell(View view) {
final ImageButton popup = (ImageButton) findViewById(view.getId());
LayoutInflater layoutInflater = (LayoutInflater) getBaseContext()
.getSystemService(LAYOUT_INFLATER_SERVICE);
View popupView = layoutInflater.inflate(R.layout.popup, null);
final PopupWindow popupWindow = new PopupWindow(popupView,
LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
popupWindow.setFocusable(true);
popupView.findViewById(popupView.getId()).setOnClickListener(
new OnClickListener() {
@Override
public void onClick(View view) {
switch (view.getId()) {
case R.id.button1:
popup.setImageResource(R.drawable.num1);
case R.id.button2:
popup.setImageResource(R.drawable.num2);
case R.id.button3:
popup.setImageResource(R.drawable.num3);
case R.id.button4:
popup.setImageResource(R.drawable.num4);
}
popupWindow.dismiss();
}
});
popupWindow.showAsDropDown(findViewById(view.getId()), -120, -2
* findViewById(view.getId()).getHeight());
}
pressCell是触发按钮的onCLick功能:
<ImageButton
android:id="@+id/cell1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="pressCell"
android:src="@drawable/num3" />
谁能告诉我这里的问题是什么?感谢。
答案 0 :(得分:0)
对于获取ImageButton的引用应该是使用;
ImageButton imageButton = (ImageButton)popupView.findViewById(R.id.cell1);
在您的代码setOnClickLİstener方法中,您将获得popupView引用;
popupView.findViewById(popupView.getId()).setOnClickListener(
new OnClickListener() {
@Override
public void onClick(View view) { // clicked view popupView.
switch (view.getId()) {
case R.id.button1:
popup.setImageResource(R.drawable.num1);
case R.id.button2:
popup.setImageResource(R.drawable.num2);
case R.id.button3:
popup.setImageResource(R.drawable.num3);
case R.id.button4:
popup.setImageResource(R.drawable.num4);
}
popupWindow.dismiss();
}
});
答案 1 :(得分:0)
在设置onClickListener之前,您正在执行此操作:
popupView.findViewById(popupView.getId()).setOnClickListener
不应该将view.getId
传递给findViewById方法吗?