接口回调的片段Nullpointer异常

时间:2014-08-13 22:55:05

标签: android nullpointerexception

我正在尝试制作我的第一个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();

1 个答案:

答案 0 :(得分:1)

变量未初始化。在onActivityCreated

中添加
gameInterface = (GameInterface) getActivity();

假设GameFragment

中创建了MainActivity

编辑(感谢@Squonk):

@Override
public void onAttach(Activity activity) {
    super.onAttach(activity);
    gameInterface = (GameInterface) activity
}