代码之家  ›  专栏  ›  技术社区  ›  Mark A.

Android片段回调接口抛出null

  •  -2
  • Mark A.  · 技术社区  · 7 年前

    您好,我有一个片段回调接口方法,它在Android 7.1.0上运行良好,但在Android 5.0.0中会引发此空异常。如何修复此问题?我感谢你的帮助。

    enter image description here

    代码

    radioGroup.setOnCheckedChangeListener(new OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(RadioGroup group, int checkedId) {
                switch(checkedId)
                {
                    case R.id.radio0:
                        answer = radio0.getText().toString();
                        break;
                    case R.id.radio1:
                        answer = radio1.getText().toString();
                        break;
                    case R.id.radio2:
                        answer = radio2.getText().toString();
                        break;
                }
            }
        });
    
    @OnClick(R.id.button_submit)
    public void submitAnswer()
    {
    
        if(radioGroup.getCheckedRadioButtonId() != -1)
        {
            datapass(true, answer.toString());
        }
        radioGroup.clearCheck();
    }
    
    
    
    public void datapass(Boolean hasAnswer, String answer)
    {
       fragmentCallBackInterface.passAnswer(hasAnswer, answer);
    }
    

    碎片回调接口

    public interface FragmentCallBackInterface 
    {
        public void passAnswer(boolean answerBool, String answerString);
    }
    

    实现接口的活动

    public class QuizActivity extends BaseActivity implements 
    FragmentCallBackInterface 
    {
        boolean answerBool;
        String answerString;
    
        @Override
        public void passAnswer(boolean answerBool, String answerString)
        {
            this.answerBool = answerBool;
            this.answerString = answerString;
    
        }
    }
    
    1 回复  |  直到 7 年前
        1
  •  2
  •   Meow Cat 2012    7 年前

    成员变量fragmentCallBackInterface是否已初始化,在哪里? 您可以在onAttach中初始化它。

    请注意,在android 6.0或API 23之前,它是onAttach(活动)。然而,之后它被更改为onAttach(上下文)。

    您应该仍然使用onAttach(活动),否则它当然不能在Android 5上运行。