Android - 为什么直接调用此函数而不是onClick会导致NullPointerException?

时间:2016-11-02 07:30:41

标签: java android nullpointerexception sinch

我正在尝试将allocate集成到我的项目中,并且我想删除“登录”按钮,即“活动”切换到下一个活动,而无需用户单击“登录”按钮。为此,我删除了setOnClickListener的{​​{1}}代码,而是直接调用mLoginButton函数,该函数之前是从loginClicked()方法调用的。
但这会导致onClick() 这些是我对代码所做的唯一更改:

NullPointerException: Attempt to invoke virtual method 'boolean com.example.yankee.cw.SinchService$SinchServiceInterface.isStarted()' on a null object reference

早些时候就是这样:

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.login);

        mLoginName = (EditText) findViewById(R.id.loginName);

        mLoginButton = (Button) findViewById(R.id.loginButton);
        mLoginButton.setEnabled(false);
//        mLoginButton.setOnClickListener(new OnClickListener() {
//            @Override
//            public void onClick(View v) {
//                loginClicked();
//            }
//        });
        loginClicked();
    }

为什么这不起作用并改为@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.login); mLoginName = (EditText) findViewById(R.id.loginName); mLoginButton = (Button) findViewById(R.id.loginButton); mLoginButton.setEnabled(false); mLoginButton.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { loginClicked(); } }); }

修改:Sinch Android SDK

2 个答案:

答案 0 :(得分:2)

getSinchServiceInterface()方法返回null,这就是为什么你得到空指针异常。

loginCliked()方法启用按钮后调用早期onServiceConnected方法。

尝试在loginClicked()方法中调用onServiceConnected()方法或使用一些延迟。

答案 1 :(得分:1)

我的解决方案:

INSERT INTO tbl_minute
SELECT userid, DATEDIFF(n, startdate, enddate) diff_in_minutes
FROM tbl_user;