我正在尝试制作我的第一个Android应用,但我遇到了以下问题:
我在我创建的主机活动中实现了一个接口。问题是,当我在片段中调用方法时,我得到NullPointerException
。
接口
public interface GameInterface {
public void gameOver();
}
片段
public class GameFragment extends Fragment implements View.OnClickListener {
...
GameInterface gameInterface;
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
Button trueButton = (Button) getView().findViewById(R.id.button_true);
trueButton.setOnClickListener(this);
}
@Override
public void onClick(View view) {
...
gameInterface.gameOver();
}
}
活动
public class MainActivity extends Activity implements GameInterface {
...
private void showStartFragment() {
StartFragment startFragment = new StartFragment();
FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.replace(R.id.container, startFragment);
ft.commit();
}
@Override
public void gameOver() {
showStartFragment();
}
}
我在我调用NullPointerException
的行中的片段中获得gameInterface.gameOver();
。
答案 0 :(得分:1)
变量未初始化。在onActivityCreated
gameInterface = (GameInterface) getActivity();
假设GameFragment
MainActivity
编辑(感谢@Squonk):
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
gameInterface = (GameInterface) activity
}