2016-10-24 1 views
-3

У меня ошибка: "java.lang.NullPointerException: попытка вызвать интерфейс method 'int java.util.List.size()' для ссылки на нулевой объект. "Возможно, я забыл назначить ценность для чего-то, но я не знаю, что именно. Что-то не так с моим массивом или ArrayList?Вызвано: java.lang.NullPointerException: попытка вызвать метод интерфейса 'int java.util.List.size()' на ссылке нулевого объекта

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> 
+0

Быстрый взгляд на код и проблема очевидна: клавиши дополнительных, очевидно, должны быть одинаковыми на «обоих концах» – Selvin

+0

это происходит, когда я нажимаю кнопку в secondactivity, чтобы начать thirdactivity, а затем приложение закончено. – lynlindasy

+0

большое спасибо! но после того, как я изменяю этот вопрос, моя третье действие не отображало содержимое списка. – lynlindasy

ответ

0

Есть 2 проблемы в коде вы перечислили, почему ваш код бросает NullPointerException и почему он не будет работать.

Во-первых, название в "putStringArrayListExtra (имя String, ArrayList значение)" и "(имя String) getStringArrayExtra" должны быть такими же

intent.putStringArrayListExtra ("список", courseName); // изменить на «имя курса» intent.putStringArrayListExtra («list», courseTime); // переход к "courseTime"

не соответствует

ArrayList courseName = intent1.getStringArrayListExtra ("courseName");
ArrayList курсTime = intent2.getStringArrayListExtra ("курсTime");

Во-вторых, вам нужно получить вызова намерения вместо создания новых намерений.

Цель намерения = getIntent();

ArrayList courseName = intent.getStringArrayListExtra ("courseName");
ArrayList курсTime = intent.getStringArrayListExtra ("курсTime");

+0

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

Смежные вопросы

 Смежные вопросы