-3

i have the error that "java.lang.NullPointerException: Attempt to invoke interface method 'int java.util.List.size()' on a null object reference".i think maybe i forgot to appoint value for something, but i don't know what it is exactly.is there something wrong with my arrayadapter or arraylist?

package com.example.lyn.finalproject;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.PopupMenu;

import java.util.ArrayList;

/**
 * Created by lyn on 2016/10/22.
 */
public class SecondActivity extends Activity {
    Button bn1;
    Button bn2;
    Button bn3;
    Button bn4;
    Button bn5;
    Button bn6;
    EditText etext1;
    EditText etext2;
    EditText etext3;
    EditText etext4;
    EditText etext5;
    EditText etext6;
    String cname1;
    String cname2;
    String cname3;
    String cname4;
    String cname5;
    String cname6;
    String ctime1;
    String ctime2;
    String ctime3;
    String ctime4;
    String ctime5;
    String ctime6;
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_second);
        etext1=(EditText) findViewById(R.id.adcourse1);
        etext2=(EditText) findViewById(R.id.adcourse2);
        etext3=(EditText) findViewById(R.id.adcourse3);
        etext4=(EditText) findViewById(R.id.adcourse4);
        etext5=(EditText) findViewById(R.id.adcourse5);
        etext6=(EditText) findViewById(R.id.adcourse6);
        bn1=(Button) findViewById(R.id.menub1);
        bn2=(Button) findViewById(R.id.menub2);
        bn3=(Button) findViewById(R.id.menub3);
        bn4=(Button) findViewById(R.id.menub4);
        bn5=(Button) findViewById(R.id.menub5);
        bn6=(Button) findViewById(R.id.menub6);
        //为每一个按钮绑定popupMenu,并且接收用户点击的课程时间信息
        bn1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                PopupMenu menu1=new PopupMenu(SecondActivity.this,bn1);
                           menu1.getMenuInflater().inflate(R.menu.time_choose_menu,
menu1.getMenu());
            menu1.setOnMenuItemClickListener(new     PopupMenu.OnMenuItemClickListener() {
                    @Override
                    public boolean onMenuItemClick(MenuItem menuItem) {
                        ctime1=menuItem.getTitle()+"";
                        Log.d("TAG",ctime1);
                        return true;
                    }
                });
                menu1.show();
            }
        });
        bn2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                PopupMenu menu2=new PopupMenu(SecondActivity.this,bn2);
                menu2.getMenuInflater().inflate(R.menu.time_choose_menu,menu2.getMenu());
                menu2.setOnMenuItemClickListener(new     PopupMenu.OnMenuItemClickListener() {
                    @Override
                    public boolean onMenuItemClick(MenuItem menuItem) {
                        ctime2=menuItem.getTitle()+"";
                        Log.d("TAG",ctime2);
                        return true;
                    }
                });
        menu2.show();
            }
        });
   bn3.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            PopupMenu menu3=new PopupMenu(SecondActivity.this,bn3);
            menu3.getMenuInflater().inflate(R.menu.time_choose_menu,menu3.getMenu());
            menu3.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
                @Override
                public boolean onMenuItemClick(MenuItem menuItem) {
                    ctime3=menuItem.getTitle()+"";
                    Log.d("TAG",ctime3);
                    return true;
                }
            });
            menu3.show();
        }
    });
    bn4.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            PopupMenu menu4=new PopupMenu(SecondActivity.this,bn4);
            menu4.getMenuInflater().inflate(R.menu.time_choose_menu,menu4.getMenu());
            menu4.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
                @Override
                public boolean onMenuItemClick(MenuItem menuItem) {
                    ctime4=menuItem.getTitle()+"";
                    Log.d("TAG",ctime4);
                    return true;
                }
            });
            menu4.show();
        }
    });
    bn5.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            PopupMenu menu5=new PopupMenu(SecondActivity.this,bn5);
            menu5.getMenuInflater().inflate(R.menu.time_choose_menu,menu5.getMenu());
            menu5.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
                @Override
                public boolean onMenuItemClick(MenuItem menuItem) {
                    ctime5=menuItem.getTitle()+"";
                    Log.d("TAG",ctime5);
                    return true;
                }
            });
            menu5.show();
        }
    });
    bn6.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            PopupMenu menu6=new PopupMenu(SecondActivity.this,bn6);
            menu6.getMenuInflater().inflate(R.menu.time_choose_menu,menu6.getMenu());
            menu6.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
                @Override
                public boolean onMenuItemClick(MenuItem menuItem) {
                    ctime6=menuItem.getTitle()+"";
                    Log.d("TAG",ctime6);
                    return true;
                }
            });
            menu6.show();
        }
    });
    //接受用户输入的课程名称
    cname1=etext1.getText()+"";
    cname2=etext2.getText()+"";
    cname3=etext3.getText()+"";
    cname4=etext4.getText()+"";
    cname5=etext5.getText()+"";
    cname6=etext6.getText()+"";
    Button bn=(Button) findViewById(R.id.bn);
    bn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            ArrayList<String> courseName=new ArrayList<String>();
            courseName.add(0,cname1);
            courseName.add(1,cname2);
            courseName.add(2,cname3);
            courseName.add(3,cname4);
            courseName.add(4,cname5);
            courseName.add(5,cname6);
            ArrayList<String> courseTime=new ArrayList<String>();
            courseTime.add(0,ctime1);
            courseTime.add(1,ctime2);
            courseTime.add(2,ctime3);
            courseTime.add(3,ctime4);
            courseTime.add(4,ctime5);
            courseTime.add(5,ctime6);
            Intent intent=new  Intent(SecondActivity.this,ThirdActivity.class);
            intent.putStringArrayListExtra("list", courseName);
            intent.putStringArrayListExtra("list",courseTime);
            startActivity(intent);
        }
    });
}

}


package com.example.lyn.finalproject;

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

import java.util.ArrayList;
import java.util.List;

/**
 * Created by lyn on 2016/10/23.
 */
public class ThirdActivity extends Activity {

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_third);
    Intent intent1=getIntent();
    Intent intent2=getIntent();
    Log.d("TAG","HI");
    ArrayList<String> courseName=intent1.getStringArrayListExtra("courseName");
    ArrayList<String> courseTime=intent2.getStringArrayListExtra("courseTime");
    ArrayAdapter<String> adapter1=new ArrayAdapter<>(ThirdActivity.this,android.R.layout.simple_list_item_1,courseName);
    ArrayAdapter<String> adapter2=new ArrayAdapter<>(ThirdActivity.this,android.R.layout.simple_list_item_1,courseTime);
    ListView listView1=(ListView) findViewById(R.id.list_view1);
    ListView listView2=(ListView) findViewById(R.id.list_view2);
    listView1.setAdapter(adapter1);
    listView2.setAdapter(adapter2);
    }
}

activity_third.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal" android:layout_width="match_parent"
    android:layout_height="match_parent">
    <ListView
    android:id="@+id/list_view1"
    android:layout_width="wrap_content"
    android:layout_height="match_parent">
</ListView>
<ListView
    android:id="@+id/list_view2"
    android:layout_width="wrap_content"
    android:layout_height="match_parent">
</ListView>

</LinearLayout>
  • Quick look at the code and problem is obvious: extra's keys obviously should be the same on "both ends" – Selvin Oct 24 '16 at 14:31
  • it occurs when i click the button in the secondactivity to start the thirdactivity, and then the app finished. – lynlindasy Oct 24 '16 at 14:32
  • thanks so much! but after i modify this question, my thirdactivity didn't show the content of listview. – lynlindasy Oct 24 '16 at 14:50

1 Answers1

0

There are 2 problems in the code you have listed as to why your code throws NullPointerException and why it would not work.

Firstly, the name in "putStringArrayListExtra(String name, ArrayList value)" and "getStringArrayExtra (String name)" must be the same

intent.putStringArrayListExtra("list", courseName); // change to "courseName" intent.putStringArrayListExtra("list",courseTime); // change to "courseTime"

does not matches

ArrayList courseName=intent1.getStringArrayListExtra("courseName");
ArrayList courseTime=intent2.getStringArrayListExtra("courseTime");

Secondly, you need to retrieve the calling intent instead of creating new intents.

Intent intent = getIntent();

ArrayList courseName = intent.getStringArrayListExtra("courseName");
ArrayList courseTime = intent.getStringArrayListExtra("courseTime");

Community
  • 1
  • 1
  • thank you and i correct it as you said.but i found only one listview of the coursetime can display, the coursetime listview did not show anything but did occupy the space of the view – lynlindasy Oct 25 '16 at 09:16