在使用android中的intent从MainActivity发送数据时,在BankList Activity中获取NullPointerException

时间:2017-11-09 08:17:58

标签: android android-intent

我正在尝试在两个活动之间传递一个arraylist,但我的应用程序在第二个活动时崩溃了。有人可以帮我解决这个问题...... 这里, 我有我的MainActivity的两个部分,其中将arraylist发送到另一个活动,即BankList Activity

Part 1:
    Intent intent = new Intent(MainActivity.this, BankList.class);
    intent.putStringArrayListExtra("BANKLIST",bankListArrayList);
    startActivity(intent);

Part 2:
    Result<ArrayList<Bank>> banklist = (Result<ArrayList<Bank>>)data;
    if(banklist.getCode().equals("00")){
        Toast.makeText(this,"list Banks success",Toast.LENGTH_SHORT).show();

        bankListArrayList = new ArrayList<>();

        for(Bank bank :banklist.getData()){
            bank.getIin();
            bank.getLogo();
            bank.getName();
            b
            ankListArrayList.add(bank.toString());
        }
        Log.d("BANK_ARRAYLIST","BANK_ARRAYLIST"+bankListArrayList);
        Toast.makeText(this,"BANK_ARRAYLIST"+bankListArrayList,Toast.LENGTH_SHORT).show();

    }

我的第二项活动(BankList)

public class BankList extends AppCompatActivity {

    ListView bankList;
    ArrayList<String> bankdataList;

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

        bankList = (ListView)findViewById(R.id.bankList);

        Intent intent = getIntent();
        intent.getStringArrayListExtra("BANKLIST");
        bankdataList.add(intent.toString());
        Toast.makeText(BankList.this,"bank list"+bankdataList,Toast.LENGTH_SHORT).show();

        ArrayAdapter<String> itemsAdapter = new ArrayAdapter<String>(getApplicationContext(),R.layout.support_simple_spinner_dropdown_item, bankdataList);

        bankList.setAdapter(itemsAdapter);
    }
}

我的日志是: -

11-09 12:58:01.548 1941-1941/com.example.rajdeeps.upi_integration E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.rajdeeps.upi_integration, PID: 1941
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.rajdeeps.upi_integration/com.example.rajdeeps.upi_integration.BankList}: java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.util.ArrayList.add(java.lang.Object)' on a null object reference
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2659)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2724)
        at android.app.ActivityThread.-wrap12(ActivityThread.java)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1473)
        at android.os.Handler.dispatchMessage(Handler.java:102)
        at android.os.Looper.loop(Looper.java:154)
        at android.app.ActivityThread.main(ActivityThread.java:6123)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:757)
     Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.util.ArrayList.add(java.lang.Object)' on a null object reference
        at com.example.rajdeeps.upi_integration.BankList.onCreate(BankList.java:30)
        at android.app.Activity.performCreate(Activity.java:6672)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1140)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2612)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2724) 
        at android.app.ActivityThread.-wrap12(ActivityThread.java) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1473) 
        at android.os.Handler.dispatchMessage(Handler.java:102) 
        at android.os.Looper.loop(Looper.java:154) 
        at android.app.ActivityThread.main(ActivityThread.java:6123)

2 个答案:

答案 0 :(得分:0)

您忘记初始化 bankdataList Arraylist 只是初始化

ArrayList<String> bankdataList= new ArrayList();;

示例代码

    public class BankList extends AppCompatActivity {


    ListView bankList;
    ArrayList<String> bankdataList;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_bank_list);
        bankdataList= new ArrayList();
        bankList = (ListView)findViewById(R.id.bankList);

        Intent intent = getIntent();
        intent.getStringArrayListExtra("BANKLIST");
        bankdataList.add(intent.toString());
        Toast.makeText(BankList.this,"bank list"+bankdataList,Toast.LENGTH_SHORT).show();

        ArrayAdapter<String> itemsAdapter = new ArrayAdapter<String>(getApplicationContext(),R.layout.support_simple_spinner_dropdown_item, bankdataList);

        bankList.setAdapter(itemsAdapter);


    }
}

答案 1 :(得分:0)

在添加项目之前,您尚未初始化bankdataList。

bankdataList =  new ArrayList<String>();
bankdataList.add(intent.getStringArrayListExtra("BANKLIST"));