I'm implementing a popup in fragment Tab3Fragment and would like to keep the popup code in,
public void showPopup(View anchorView){
}
and minimized elsewhere in the Tab3Fragment as much as possible to keep things tidy.
Currently showPopup looks something like this,
public void showPopup(View anchorView) {
Button btnDismiss, btnFirstRecord, btnPreviousRecord, btnNextRecord, btnLastRecord;
LayoutInflater layoutInflater = (LayoutInflater)getActivity().getSystemServi (Context.LAYOUT_INFLATER_SERVICE);
View popupView = layoutInflater.inflate(R.layout.popup_layout, null);
final PopupWindow popupWindow = new PopupWindow(popupView, LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
TextView tv = (TextView)popupView.findViewById(R.id.tv);
tv.setText("Blah, blah, blah");
btnDismiss = (Button)popupView.findViewById(R.id.btnDismissxml);
btnFirstRecord = (Button)popupView.findViewById(R.id.btnFirstRecordxml);
btnPreviousRecord = (Button)popupView.findViewById(R.id.btnPreviousRecordxml);
btnNextRecord = (Button)popupView.findViewById(R.id.btnNextRecordxml);
btnLastRecord = (Button)popupView.findViewById(R.id.btnLastRecordxml);
popupWindow.setFocusable(true);
int location[] = new int[2];
anchorView.getLocationOnScreen(location);
popupWindow.showAtLocation(anchorView, Gravity.CENTER, 0, 0);
}
}
QUESTION: Is there any way to implement an onClick method case-switch statement inside of showPopup that would handle this? Perhaps something like,
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.btnFirstRecordxml:
//firstRecord(v);
break;
case R.id.btnPreviousRecordxml:
//previousRecord(v);
break;
case R.id.btnNextRecordxml:
//nextRecord(v);
break;
case R.id.btnLastRecordxml:
//lastRecord(v);
break;
case R.id.btnDismissxml:
//closePopup(v);
break;
}}
Other solutions such as putting onClick in popup_layout.xml thusly,
<Button
android:id="@+id/btnFirstRecordxml"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/pszFirstRecordButton"
android:onClick="Tab3Fragment.firstRecord"/>
to handle button clicks would be highly appreciated. Thanks in advance...
Update, 23 Nov 2014. Here is a solution that does work for more than one button's code in showPopup(). I'll have several buttons in the popup....
private void showPopup(){
LayoutInflater layoutInflater = (LayoutInflater)getActivity().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View popupView = layoutInflater.inflate(R.layout.popup_layout, null);
Button btnDismiss=(Button)popupView.findViewById(R.id.btnDismissxml);
Button btnSaveRecord=(Button)popupView.findViewById(R.id.btnSaveRecordxml);
final PopupWindow popupWindow=new PopupWindow(popupView,480,500,true);
popupWindow.showAtLocation(popupView, Gravity.CENTER, 0, 40);
//first button
btnSaveRecord.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
saveRecord();
}
});
//second button
btnDismiss.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
popupWindow.dismiss();
}
});
}
Any way to insert a case-switch structure to allow other button code in showPopup()? This would avoid creating separate onClickListener-onClicks for each button as shown above.
Modify the xml like this, use
android:onClick="ClickEvent"
this formet in all the buttonuse the click funcationality like this,
Or try this,
btn.setOnClickListener(btnaction);
set like this listener for all buttons,