Android – NullPointerException: almacenamiento == null

Hola Tengo problemas con una aplicación para Android que estoy construyendo fuera de un tutorial en línea, sigue fallando cuando intento ejecutarlo con la excepción mencionada. Realmente agradecería alguna ayuda sobre cómo detener este error por favor. Aquí está mi actividad principal:

package com.niall.easytxt; import android.app.Activity; import android.content.Intent; import android.database.DataSetObserver; import android.os.Bundle; import android.view.KeyEvent; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.view.View.OnKeyListener; import android.widget.AbsListView; import android.widget.Button; import android.widget.EditText; import android.widget.ListView; public class MainActivity extends Activity { private ChatArrayAdapter adp; private ListView list; private EditText chatText; private Button send; Intent in; private boolean side = false; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Intent i = getIntent(); send = (Button)findViewById(R.id.btn); list = (ListView)findViewById(R.id.listview); adp = new ChatArrayAdapter(getApplicationContext(),R.layout.chat, null); chatText = (EditText)findViewById(R.id.chat); chatText.setOnKeyListener(new OnKeyListener(){ public boolean onKey(View v, int keyCode, KeyEvent event){ if((event.getAction()==KeyEvent.ACTION_DOWN) && (keyCode == KeyEvent.KEYCODE_ENTER)) { return sendChatMessage(); } return false; } }); send.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { sendChatMessage(); } }); list.setTranscriptMode(AbsListView.TRANSCRIPT_MODE_ALWAYS_SCROLL); list.setAdapter(adp); adp.registerDataSetObserver(new DataSetObserver() { public void OnChanged(){ super.onChanged(); list.setSelection(adp.getCount() -1); } }); } private boolean sendChatMessage() { adp.add(new ChatMessage(side,chatText.getText().toString())); chatText.setText(""); side =! side; return true; } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId(); if (id == R.id.action_settings) { return true; } return super.onOptionsItemSelected(item); } } 

Y mi ChatArrayAdapter:

 package com.niall.easytxt; import java.util.ArrayList; import java.util.List; import android.content.Context; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.view.Gravity; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ArrayAdapter; import android.widget.LinearLayout; import android.widget.TextView; public class ChatArrayAdapter extends ArrayAdapter<ChatMessage>{ private TextView chatText; private List<ChatMessage> MessageList = new ArrayList<ChatMessage>(); private LinearLayout layout; public ChatArrayAdapter(Context context, int resource, ChatMessage[] objects) { super(context, resource, objects); } public void add(ChatMessage object) { MessageList.add(object); super.add(object); } public int getCount() { return this.MessageList.size(); } public ChatMessage getItem(int index) { return this.MessageList.get(index); } public View getView(int position, View ConvertView, ViewGroup parent) { View v = ConvertView; if(v==null){ LayoutInflater inflater = (LayoutInflater) this.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); v =inflater.inflate(R.layout.chat, parent,false); } layout = (LinearLayout)v.findViewById(R.id.Message1); ChatMessage messageobj = getItem(position); chatText = (TextView)v.findViewById(R.id.SingleMessage); chatText.setText(messageobj.message); chatText.setBackgroundResource(messageobj.left ? R.drawable.bubble_a :R.drawable.bubble_b); layout.setGravity(messageobj.left?Gravity.START:Gravity.END); return v; } public Bitmap decodeToBitmap(byte[] decodedByte){ return BitmapFactory.decodeByteArray(decodedByte, 0, decodedByte.length); } } 

Aquí está el logcat

 04-29 05:40:03.988: D/AndroidRuntime(1794): Shutting down VM 04-29 05:40:03.988: E/AndroidRuntime(1794): FATAL EXCEPTION: main 04-29 05:40:03.988: E/AndroidRuntime(1794): Process: com.niall.easytxt, PID: 1794 04-29 05:40:03.988: E/AndroidRuntime(1794): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.niall.easytxt/com.niall.easytxt.MainActivity}: java.lang.NullPointerException: storage == null 04-29 05:40:03.988: E/AndroidRuntime(1794): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2298) 04-29 05:40:03.988: E/AndroidRuntime(1794): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360) 04-29 05:40:03.988: E/AndroidRuntime(1794): at android.app.ActivityThread.access$800(ActivityThread.java:144) 04-29 05:40:03.988: E/AndroidRuntime(1794): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278) 04-29 05:40:03.988: E/AndroidRuntime(1794): at android.os.Handler.dispatchMessage(Handler.java:102) 04-29 05:40:03.988: E/AndroidRuntime(1794): at android.os.Looper.loop(Looper.java:135) 04-29 05:40:03.988: E/AndroidRuntime(1794): at android.app.ActivityThread.main(ActivityThread.java:5221) 04-29 05:40:03.988: E/AndroidRuntime(1794): at java.lang.reflect.Method.invoke(Native Method) 04-29 05:40:03.988: E/AndroidRuntime(1794): at java.lang.reflect.Method.invoke(Method.java:372) 04-29 05:40:03.988: E/AndroidRuntime(1794): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899) 04-29 05:40:03.988: E/AndroidRuntime(1794): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694) 04-29 05:40:03.988: E/AndroidRuntime(1794): Caused by: java.lang.NullPointerException: storage == null 04-29 05:40:03.988: E/AndroidRuntime(1794): at java.util.Arrays$ArrayList.<init>(Arrays.java:38) 04-29 05:40:03.988: E/AndroidRuntime(1794): at java.util.Arrays.asList(Arrays.java:155) 04-29 05:40:03.988: E/AndroidRuntime(1794): at android.widget.ArrayAdapter.<init>(ArrayAdapter.java:128) 04-29 05:40:03.988: E/AndroidRuntime(1794): at com.niall.easytxt.ChatArrayAdapter.<init>(ChatArrayAdapter.java:26) 04-29 05:40:03.988: E/AndroidRuntime(1794): at com.niall.easytxt.MainActivity.onCreate(MainActivity.java:33) 04-29 05:40:03.988: E/AndroidRuntime(1794): at android.app.Activity.performCreate(Activity.java:5933) 04-29 05:40:03.988: E/AndroidRuntime(1794): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105) 04-29 05:40:03.988: E/AndroidRuntime(1794): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2251) 04-29 05:40:03.988: E/AndroidRuntime(1794): ... 10 more 

 adp = new ChatArrayAdapter(getApplicationContext(),R.layout.chat, null); 

su problema está en esta línea. Está pasando null como conjunto de datos. Una referencia nula de ChatMessage[] . El súper constructor llama

 Arrays.asList(objects) 

que está causando la excepción. Para arreglarlo, proporcione un conjunto de datos vacío. Por ejemplo, puede cambiar su constructor como:

 public ChatArrayAdapter(Context context, int resource) { super(context, resource, MessageList); } 

Dentro de la onCreate en MainActivity

 adp = new ChatArrayAdapter(getApplicationContext(),R.layout.chat, null); 

El tercer argumento a esa llamada es el conjunto de datos, donde el adaptador extraerá los datos. Pasar null lo hará lanzar una NullPointerException tan pronto como intente acceder a sus datos.

Así que para resolver este problema simplemente cambia ese "nulo" en una matriz real de ChatMessage.

  • Javax. * No se puede importar en mi aplicación para Android?
  • Proyecto Eclipse "guardar como"
  • ¿Cómo ejecutar una muestra de Google Glass GDK en el dispositivo?
  • ¿Cómo asigno un dibujable a ImageView
  • JavaMail - Análisis de contenido de correo electrónico, no puede parecer que lo haga funcionar! (Message.getContent ())
  • Android ejecuta una función en una clase en un nuevo hilo
  • Android: Error al cargar la imagen en diferentes versiones de Android
  • Android: ¿Proporciona sugerencias de búsqueda recientes sin actividad de búsqueda?
  • Abrir un proyecto en Eclipse
  • Android Ant Build
  • Depuración de Eclipse: while continue after return statement?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.