'java.lang.String [] android.os.Bundle.getStringArray (java.lang.String)' - PullRequest
0 голосов
/ 14 ноября 2018

Я пытаюсь получить проверенные listview элементы с в ожидании активности до allow_to activity.Вот мой код:

pending.java

        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                SparseBooleanArray checked = listView.getCheckedItemPositions();
                ArrayList<String> selectedItems = new ArrayList<String>();
                String str = null;
                for (int i = 0; i < checked.size(); i++) {
                    int position;
                    position = checked.keyAt(i);
                    if (checked.valueAt(i))
                        selectedItems.add(String.valueOf(arrayAdapter.getItem(position)));
                    str = listView.getItemAtPosition(i).toString();
                    if(ContextCompat.checkSelfPermission(getApplicationContext(),Manifest.permission.SEND_SMS)
                            != PackageManager.PERMISSION_GRANTED)
                    {
                        ActivityCompat.requestPermissions(pending.this,new String[]{Manifest.permission.SEND_SMS},MY_PERMISSIONS_REQUEST_SEND_SMS );
                    }
                    else
                    {
                        SmsManager sms = SmsManager.getDefault();
                        sms.sendTextMessage(str,null,"#def",null,null);
                        Toast.makeText(getApplicationContext(), "Affirmation sent !!",
                                Toast.LENGTH_SHORT).show();
                    }

                }
                String[] StrArr = new String[selectedItems.size()];

                for (int i = 0; i < selectedItems.size(); i++) {
                    StrArr[i] = selectedItems.get(i);
                }

                Intent intent = new Intent(getApplicationContext(),
                        allowed_to.class);
                b = new Bundle();
                b.putStringArray("nibba", StrArr);
                intent.putExtras(b);
                startActivity(intent);
                arrayAdapter.remove(str);

            }
        });

allow_to.java

public class allowed_to extends pending {
public static String[] resultArr;

public static ListView lvl;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.allowed_to);


    Bundle bundle = getIntent().getExtras();


        resultArr = bundle.getStringArray("nibba");

        lvl = (ListView) findViewById(R.id.lv);
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
                android.R.layout.simple_list_item_1, resultArr);
        lvl.setAdapter(adapter);
        Toast.makeText(getApplicationContext(), "Allowed successfully !!",
                Toast.LENGTH_SHORT).show();
    }


}

Но всякий раз, когда яоткройте приложение, я получаю эту ошибку, и мое приложение вылетает.

logcat

11-14 19:55:21.782 28136-28136/com.nevermiss.subhamdutta.nevermiss E/AndroidRuntime: FATAL EXCEPTION: main
     Process: com.nevermiss.subhamdutta.nevermiss, PID: 28136
     java.lang.RuntimeException: Unable to start activity ComponentInfo{com.nevermiss.subhamdutta.nevermiss/com.nevermiss.subhamdutta.nevermiss.allowed_to}: java.lang.NullPointerException: **Attempt to invoke virtual method 'java.lang.String[] android.os.Bundle.getStringArray(java.lang.String)' on a null object reference**
         at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2434)
         at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2494)
         at android.app.ActivityThread.access$900(ActivityThread.java:153)
         at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1347)
         at android.os.Handler.dispatchMessage(Handler.java:102)
         at android.os.Looper.loop(Looper.java:148)
         at android.app.ActivityThread.main(ActivityThread.java:5451)
         at java.lang.reflect.Method.invoke(Native Method)
         at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)

Обновление: Я также пытался проверить установку ifСкажите следующее:

package com.nevermiss.subhamdutta.nevermiss;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;

import java.util.ArrayList;

import static android.R.attr.data;

public class allowed_to extends pending {
    public static String[] resultArr;

    public static ListView lvl;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.allowed_to);


        Bundle bundle = getIntent().getExtras();
        if(bundle != null) {

        resultArr = bundle.getStringArray("nibba");

        lvl = (ListView) findViewById(R.id.lv);
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
        android.R.layout.simple_list_item_1, resultArr);
        lvl.setAdapter(adapter);
        Toast.makeText(getApplicationContext(), "Allowed successfully !!",
        Toast.LENGTH_SHORT).show();
        }
    }

}

К счастью, приложение открывается, но listview совершенно пусто.Как мне просмотреть эти listview элементы?

Ответы [ 2 ]

0 голосов
/ 14 ноября 2018

Ваш класс allowed_to расширяет pending (реальное занятие) и, возможно, его контекст. Поэтому, когда вы звоните

Bundle bundle = getIntent().getExtras();

вы на самом деле пытаетесь получить пакет pending Activity.

Так что мое лучшее предположение - сделать allowed_to продление AppCompatActivity, как pending делает.

0 голосов
/ 14 ноября 2018
String[] StrArr = new String[selectedItems.size()];

                for (int i = 0; i < selectedItems.size(); i++) {
                    StrArr[i] = selectedItems.get(i);
                }

Я думаю, ваша ошибка в этот момент.Что-то не так с выбранными предметами.Запишите все значения этих элементов, прежде чем поместить их в комплект.Я думаю, что выбранные вами предметы пусты.

...