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 

2 Solutions collect form web for “Android – NullPointerException: almacenamiento == null”

 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.

  • Tiempo y cancelación de socket
  • El desplazamiento de la vista web de Android no funciona
  • La animación de ViewGroup no funciona
  • Explicación de la sintaxis de Java - getMenuInflater ()
  • Android: ¿Es posible dibujar una vista en la parte superior del mapa como una superposición
  • Uso de la biblioteca de Android en un proyecto Java regular
  • SMS en hebreo en Android
  • Cómo evitar que Autocompletar de Android Studio quita el token adyacente
  • Guardar archivo en una carpeta específica con Google Drive SDK
  • ¿Cómo actualizo el SSL cert en mis aplicaciones Android?
  • No se puede usar getLayoutPosition () o getAdapterPosition () en RecyclerView
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.