按活动A上的删除按钮。将打开以下自定义片段。因此,如果我按下自定义警报框上的“确定”按钮,如何使其运行在活动A中的deleteRecord()函数。我的自定义警报框的代码是:
public class CustomAlertBoxFragment extends DialogFragmentBase implements
android.view.View.OnClickListener {
public Activity c;
public TextView messageTextView;
public Boolean proceed;
public String messages;
private MyFragment mListener;
interface MyFragment {
public void removeAllButton_onClick();
}
public CustomAlertBoxFragment(Activity a,Boolean proceed, String message) {
this.messages = message;
this.proceed = proceed;
this.c = a;
Vibrator v = (Vibrator) c.getSystemService(Context.VIBRATOR_SERVICE);
v.vibrate(25);
}
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
getActivity().setTheme(android.R.style.Theme_Holo_Light_Dialog);
mListener = (MyFragment)activity;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.icon_custom_alertbox, container, false);
super.onCreate(savedInstanceState);
messageTextView = (TextView) v.findViewById(R.id.messageTextView);
v.findViewById(R.id.okButton).setOnClickListener(this);
v.findViewById(R.id.closeButton).setOnClickListener(this);
messageTextView.setText(messages);
getActivity().setTheme(R.style.iconDialogTheme);
return v;
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.okButton:
mListener.removeAllButton_onClick();
break;
case R.id.closeButton:
dismiss();
break;
default:
break;
}
dismiss();
}
}
答案 0 :(得分:2)
在CustomAlertBoxFragment中声明一个接口:
interface AlertBoxListener {
public void onDeleteRecord();
}
在您的活动中实施此界面。
public class DashboardActivity extends Activity implements CustomAlertBoxFragment.AlertBoxListener {
....
public void onDeleteRecord() {
Toast.makeText(this, "IT WORKS", Toast.LENGTH_SHORT).show();
}
现在将参考文献存储在对话框中:
public class CustomAlertBoxFragment ... {
private AlertBoxListener mListener;
@Override
public void onAttach(Activity activity) {
....
mListener = (AlertBoxListener)activity;
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.okButton:
mListener.onDeleteRecord();
break;
....
}
只需在需要时调用onDeleteRecord - 它将在您的活动中运行
答案 1 :(得分:-1)
AFAIK,默认情况下,活动获取附加到其中的片段中存在的按钮的所有onClick事件。因此,您只需在MainActivity中使用onClick方法并处理计算。如果我在这里错了,请有人纠正我。
或者,使用界面。 (Tutorial)
最后,最糟糕的方法是,您可以通过覆盖onAttach()
来存储活动实例,然后只需调用活动A中的方法。
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
ActivityA activityA = ((ActivityA ) activity);
}
以及您需要的任何地方:
activityA.yourMethodHere(someRandomParam);