我制作的游戏应用会在游戏结束时显示extlibs
。在对话框中,有一个AlertDialog
可以再次播放。
我希望按钮调用我已经为positiveButton
方法创建的函数,但我不希望函数是静态的。
以下是我的onCreate()
方法:
onCreate
我想从对话框中调用protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
setup();
}
函数。
怎么会这样呢?
提前致谢!
答案 0 :(得分:2)
它不必是静态的。如果您对肯定按钮的回调是匿名或非静态内部类,则它可以访问外部类的非静态方法。您只需从回调中调用setup()
即可。
当然,如果您不使用匿名或非静态内部回调类,则不会出现这种情况,在这种情况下,您必须使Activity方法静态才能调用它。
This answer显示了如何操作。
答案 1 :(得分:0)
如果您像我在最新项目中一样使用DialogFragment
,您可以创建一个界面。例如:
/// Inside my DialogFragment
public interface ChooserListener {
public void setupDialogListener();
}
// Inside my DialogFragment
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
try {
mListener = (ChooserListener) activity;
} catch (ClassCastException e) {
throw new ClassCastException(activity.toString()+" must implement the ChooserListener interface.");
}
}
然后您可以使用... implements YourDialogFragment.YourListener
将界面实现到您的应用程序中。现在,您必须在侦听器中将预定义函数实现到主活动中,并且只需从Dialog内部触发它们即可。如需进一步参考,请参阅Dialogs - Passing Events
在你的情况下,你应该写一个这样的函数:
public void setupDialogListener() {
setup();
}
答案 2 :(得分:0)
基于@ arsent的回答基本思路,这对我有用:
{{1}}
感谢大家的帮助!