При вызове onclick приложение крашиться

245
22 декабря 2017, 01:46

Я использую библиотеку Zxing для распознавания QR кодов и она работает по android:onClick="scan", но если я нажимаю android:onClick="arch":
- ошибка - приложение остановлено, как и при android:onClick="test"

Logcat говорит:

java.lang.RuntimeException: Unable to pause activity {net.den.appp/net.den.appp.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void me.dm7.barcodescanner.zxing.ZXingScannerView.stopCamera()' on a null object reference

Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void me.dm7.barcodescanner.zxing.ZXingScannerView.stopCamera()' on a null object reference

Как это поправить?

import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Toast;
import com.google.zxing.Result;
import me.dm7.barcodescanner.zxing.ZXingScannerView;
public class MainActivity extends AppCompatActivity implements ZXingScannerView.ResultHandler{
    private ZXingScannerView zXingScannerView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
    public void arch(View view) {
        Intent intent = new Intent(this, ArchiveActivity.class);
        finish();
        startActivity(intent);
    }
    public void test() {
        int q =0;
    }
    public void scan(View view){
        zXingScannerView =new ZXingScannerView(getApplicationContext());
        setContentView(zXingScannerView);
        zXingScannerView.setResultHandler(this);
        zXingScannerView.startCamera();
    }
    @Override
    protected void onPause() {
        super.onPause();
        zXingScannerView.stopCamera();
    }
    @Override
    public void handleResult(Result result) {
        Toast.makeText(getApplicationContext(),result.getText(),Toast.LENGTH_SHORT).show();        zXingScannerView.resumeCameraPreview(this);
    }
}
Answer 1

У вас не инициализируется переменная zXingScannerView, он инициализируется в методе scan(), а в методе arch() не инициализируется.

Крашится на вызове

zXingScannerView.stopCamera();

в методе onPause()

Вообще это очень плохая практика - декларация слушателя клика в лейауте через android:onClick

READ ALSO
Задача по Java, принципы ООП

Задача по Java, принципы ООП

У меня такая задача:

233
CURRENT_TIMESTAMP в long

CURRENT_TIMESTAMP в long

К примеру есть дата, которая была сделана с помощью CURRENT_TIMESTAMP в mysql -> String date = "2017-12-20 16:49:31"; Мне нужно её преобразовать в то, из чего можно вытащить...

255
Сохранить прогресс скролла NestedScrollView

Сохранить прогресс скролла NestedScrollView

У меня есть NestedScrollView, в котором есть TextView с большим объемом текста, мне нужно событие прокрутки при остановки сохранять в Preferences, возможно...

176