我有GridView A和PopupWindow A。
我只想关闭PopupWindow A,如果我单击GridView A中的一个项目。
现在,就像当我打开结果片段时,PopupWindow A一直停留在屏幕上。
PopupWindow A也是从GridView B中的一个项目中弹出的。
所以我已经实现了AdapterView.OnItemClickListener到GridView B。
GridViewImplement.java:
public AdapterView.OnItemClickListener mOnItemClickListener = new AdapterView.OnItemClickListener(){
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long id){
View popupView = activity.getLayoutInflater().inflate(R.layout.popup, null);
final PopupWindow mPopupWindow = new PopupWindow(popupView, 800, 500, true);
if(id != 0){
GridView gridViewA = (GridView)popupView.findViewById(R.id.gridview_a_popup);
GridViewAdapter gridViewAdapter = new GridViewAdapter(activity, list, true);
gridViewA.setAdapter(gridViewAdapter);
GridViewImplement impl = new GridViewImplement(activity).
gridView.setOnItemClickListener(impl.mOnItemClickListener);
Button closeButton = (Button) popupView.findViewById(R.id.btn_popup_close);
if (closeButton != null) {
closeButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mPopupWindow.dismiss();// here is works.
}
});
}
}else{
mPopupWindow.dismiss();// here not work.
Bundle bundle = new Bundle();
activity.replaceFragment(ResultFragment.newInstance(),bundle,R.id.fragment_result);
}
}
}修改代码
GridViewImplement.java:
PopupWindow mPopupWindow;
public AdapterView.OnItemClickListener mOnItemClickListener = new AdapterView.OnItemClickListener(){
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long id){
View popupView = activity.getLayoutInflater().inflate(R.layout.popup, null);
if(id != 0){
mPopupWindow = new PopupWindow(popupView, 800, 500, true);
GridView gridViewA = (GridView)popupView.findViewById(R.id.gridview_a_popup);
GridViewAdapter gridViewAdapter = new GridViewAdapter(activity, list, true);
gridViewA.setAdapter(gridViewAdapter);
GridViewImplement impl = new GridViewImplement(activity).
gridView.setOnItemClickListener(impl.mOnItemClickListener);
Button closeButton = (Button) popupView.findViewById(R.id.btn_popup_close);
if (closeButton != null) {
closeButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mPopupWindow.dismiss();// here will warning need key 'final'.
}
});
}
}else{
mPopupWindow.dismiss();// here not work.
Bundle bundle = new Bundle();
activity.replaceFragment(ResultFragment.newInstance(),bundle,R.id.fragment_result);
}
}
}works代码从我的朋友那里得到
GridViewImplement.java:
public AdapterView.OnItemClickListener mOnItemClickListener = new AdapterView.OnItemClickListener(){
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long id){
View popupView = activity.getLayoutInflater().inflate(R.layout.popup, null);
final PopupWindow mPopupWindow = new PopupWindow(popupView, 800, 500, true);
if(id != 0){
GridView gridViewA = (GridView)popupView.findViewById(R.id.gridview_a_popup);
GridViewAdapter gridViewAdapter = new GridViewAdapter(activity, list, true);
gridViewA.setAdapter(gridViewAdapter);
//GridViewImplement impl = new GridViewImplement(activity).
//gridView.setOnItemClickListener(impl.mOnItemClickListener);// here just use a total new implement.
gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
mPopupWindow.dismiss();// works here.
Bundle bundle = new Bundle();
activity.replaceFragment(ResultFragment.newInstance(),bundle,R.id.fragment_result);
}
});
Button closeButton = (Button) popupView.findViewById(R.id.btn_popup_close);
if (closeButton != null) {
closeButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mPopupWindow.dismiss();// works here
}
});
}
}else{
//mPopupWindow.dismiss(); // here looks like not needed any more.
Bundle bundle = new Bundle();
activity.replaceFragment(ResultFragment.newInstance(),bundle,R.id.fragment_result);
}
}
}发布于 2014-04-21 08:22:58
您可以为您的OnClickListener设置一个GridView并添加popupWindow.dismiss()来关闭弹出窗口。基本上是这样做的:
gridView.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
popupWindow.dismiss();
}
}https://stackoverflow.com/questions/23193376
复制相似问题