Почему мое приложение падает каждый раз, когда я использую эту Logi c? - PullRequest
0 голосов
/ 22 февраля 2020

В приложении есть несколько cardView, и нажмите на каждую карту, чтобы запустить новое намерение. Кроме того, перед запуском Intent я передаю puExtra.

  final String label = holder.text_label.getText().toString().trim();

    holder.cardView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if (position == 0 && label.equalsIgnoreCase("Alt. English")) {

                Intent intent = new Intent(context, ShowPDFActivity.class);
                intent.putExtra("AltE","AltE");
                context.startActivity(intent);

            }
        }
    });

И в другой своей деятельности я создал массив заголовков, в котором я сохранил все возможные значения, которые в этом задании.

 String[] title = {
            "AltE",
            "Alt.English2013"
    };

Теперь я запускаю для L oop, чтобы посмотреть, какое значение получено, и, соответственно, выполнить функции.

Intent intent = getIntent();
    for (int i = 0; i <= title.length; i++) {
        Log.e("Length ", String.valueOf(title.length));

        a1 = intent.getStringExtra(title[i]);

        if (a1.equalsIgnoreCase("AltE")) {

            String pdf = "https://www.researchgate.net/STUDIES.pdf";
            webView.loadUrl("http://docs.google.com/viewer?url=" + pdf);

            webView.setWebViewClient(new WebViewClient() {

                public void onPageFinished(WebView view, String url) {
                    // do your stuff here
                    progressbar.setVisibility(View.GONE);
                }
            });


        } else {
            Toast.makeText(this, "In Else", Toast.LENGTH_SHORT).show();
        }

Но приложение вылетает с этим сообщением:

     Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.lang.String.equalsIgnoreCase(java.lang.String)' on a null object reference

Что я делаю неправильно и как это можно исправить?

1 Ответ

1 голос
/ 22 февраля 2020

Первый реверс: от

if (a1.equalsIgnoreCase("AltE")) {

до

   if ("AltE".equalsIgnoreCase(a1)) {

, так как «AltE» не будет равен нулю, он перестанет падать.

Также причина вашего cra sh в том, что getStringExtra возвращает значение по умолчанию null, и вы проверяете для каждого заголовка, а не только для одного. и поэтому для "Alt.English2013" у вас нет значения, согласно вашей истории.

...