Autore Topic: android unable to start activity componentinfo java.lang.nullpointerexception  (Letto 857 volte)

Offline ValerioAdo

  • Utente normale
  • ***
  • Post: 319
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Huawei Ascend g525
  • Sistema operativo:
    windows 8.1
Salve a tutti

come avrete già capito dal titolo il mio log cat da appunto quell'errore, nel dettaglio
Codice: [Seleziona]
10-29 08:12:04.473: E/AndroidRuntime(888): FATAL EXCEPTION: main
10-29 08:12:04.473: E/AndroidRuntime(888): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.blablapp/com.example.blablapp.dovesiamo}: java.lang.NullPointerException
10-29 08:12:04.473: E/AndroidRuntime(888):         at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2211)
10-29 08:12:04.473: E/AndroidRuntime(888):         at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261)
10-29 08:12:04.473: E/AndroidRuntime(888):         at android.app.ActivityThread.access$600(ActivityThread.java:141)
10-29 08:12:04.473: E/AndroidRuntime(888):         at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
10-29 08:12:04.473: E/AndroidRuntime(888):         at android.os.Handler.dispatchMessage(Handler.java:99)
10-29 08:12:04.473: E/AndroidRuntime(888):         at android.os.Looper.loop(Looper.java:137)
10-29 08:12:04.473: E/AndroidRuntime(888):         at android.app.ActivityThread.main(ActivityThread.java:5103)
10-29 08:12:04.473: E/AndroidRuntime(888):         at java.lang.reflect.Method.invokeNative(Native Method)
10-29 08:12:04.473: E/AndroidRuntime(888):         at java.lang.reflect.Method.invoke(Method.java:525)
10-29 08:12:04.473: E/AndroidRuntime(888):         at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
10-29 08:12:04.473: E/AndroidRuntime(888):         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
10-29 08:12:04.473: E/AndroidRuntime(888):         at dalvik.system.NativeStart.main(Native Method)
10-29 08:12:04.473: E/AndroidRuntime(888): Caused by: java.lang.NullPointerException
10-29 08:12:04.473: E/AndroidRuntime(888):         at com.example.blablapp.dovesiamo.onCreate(dovesiamo.java:24)
10-29 08:12:04.473: E/AndroidRuntime(888):         at android.app.Activity.performCreate(Activity.java:5133)
10-29 08:12:04.473: E/AndroidRuntime(888):         at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
10-29 08:12:04.473: E/AndroidRuntime(888):         at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2175)
10-29 08:12:04.473: E/AndroidRuntime(888):         ... 11 more

so che magari è un problema stupido e che dovrei saper risolvere da solo ma proprio non ci salto fuori.
Questo è il codice della MainActivity.java

Codice (Java): [Seleziona]
package com.example.blablapp;

import java.util.ArrayList;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.ListView;

public class MainActivity extends Activity {

       

        @Override
        protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.home);
               
                AlertDialog.Builder miaAlert = new AlertDialog.Builder(this);
                miaAlert.setMessage("Se non sei maggiorenne non puoi accedere all'app");
                miaAlert.setTitle("Hai più di 18 anni?");

                miaAlert.setCancelable(false);
                miaAlert.setPositiveButton("Si", new DialogInterface.OnClickListener() {
                  public void onClick(DialogInterface dialog, int id) {
                   
                  }
                });
                   
                miaAlert.setNegativeButton("No", new DialogInterface.OnClickListener() {
                  public void onClick(DialogInterface dialog, int id) {
                finish();
                  }
                });

                AlertDialog alert = miaAlert.create();
                alert.show();
       
       
        //definisco un array di stringhe
        String[] home =new String[]{"About","Gallery","Eventi","Prenotazione","Dove siamo"};
       
        ArrayAdapter<String> adapter=new ArrayAdapter<String>(this, R.layout.rowhome,home);
    ListView listView = (ListView) findViewById(R.id.listView1);
    listView.setAdapter(adapter);
       
       
   
    listView.setOnItemClickListener(new OnItemClickListener(){
       
                @Override
                public void onItemClick(AdapterView<?> titolo, View view, int pos,
                                long id) {
                        // TODO Auto-generated method stub
                       
                        if(pos==1){
                                Intent i=new Intent(MainActivity.this,gallery.class);
                                startActivity(i);
                        }
                        if(pos==2){
                                Intent i=new Intent(MainActivity.this,eventi.class);
                                startActivity(i);
                        }
                        if(pos==3){
                                Intent i=new Intent(MainActivity.this,prenotazione.class);
                                startActivity(i);
                        }
                        if(pos==4){
                                Intent i= new Intent(MainActivity.this,dovesiamo.class);
                                startActivity(i);
                        }
                       
                }
    });
       
        }

        @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);
        }
}

e questo è il codice della classe dovesiamo.java
Codice (Java): [Seleziona]
package com.example.blablapp;


import android.os.Bundle;
import android.support.v4.app.FragmentActivity;

import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.MapFragment;
import com.google.android.gms.maps.model.LatLng;


public class dovesiamo extends FragmentActivity {
       
        protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.dovesiamo);
       
        // Get a handle to the Map Fragment
        GoogleMap map = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap();
       
        LatLng blabla = new LatLng(44.790842, 10.363377);
        map.setMyLocationEnabled(true);
        map.moveCamera(CameraUpdateFactory.newLatLngZoom(blabla, 13));
       
    }

}

ed infine il manifest relativo agli intent (naturalmente non è tutto solo perché non voglio allungare più di tanto il post)

Codice (XML): [Seleziona]
    <application
       android:allowBackup="true"
       android:icon="@drawable/ic_launcher"
       android:label="@string/app_name"
       android:theme="@android:style/Theme.NoTitleBar">
        <activity
           android:name=".MainActivity"
           android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
       <activity android:name="com.example.blablapp.dovesiamo"></activity>
        <activity android:name="com.example.blablapp.eventi"></activity>
         <activity android:name="com.example.blablapp.prenotazione"></activity>
          <activity android:name="com.example.blablapp.gallery"></activity>
         
          <meta-data
           android:name="com.google.android.gms.version"

           android:value="@integer/google_play_services_version" />

naturalmente per le altre opzioni del menù non ci sono problemi.... la libreria delle API google maps sono integrate correttamente.
Grazie mille in anticipo per l'aiuto ^^

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:android unable to start activity componentinfo java.lang.nullpointerexception
« Risposta #1 il: 29 Ottobre 2014, 13:42:41 CET »
+1
Citazione
10-29 08:12:04.473: E/AndroidRuntime(888): Caused by: java.lang.NullPointerException
10-29 08:12:04.473: E/AndroidRuntime(888):         at com.example.blablapp.dovesiamo.onCreate(dovesiamo.java:24)

Il logcat ti dice che alla riga 24 di dovesiamo.java qualcosa è null e non dovrebbe.

Non so con certezza quale sia riga 24, ma se è map.setMyLocationEnabled(true) allora map è null.

A parte trovare perchè e per come, è sempre buona norma controllare se è un oggetto è null, prima di accedervi. Cioè impostare il codice in questo modo:

Codice (Java): [Seleziona]
    GoogleMap map = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap();
    LatLng blabla = new LatLng(44.790842, 10.363377);
    if (map!=null) }{
        map.setMyLocationEnabled(true);
        map.moveCamera(CameraUpdateFactory.newLatLngZoom(blabla, 13));
    } else {
        // avvisa
    ]
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline eagledeveloper

  • Translate Team
  • Utente senior
  • ****
  • Post: 516
  • Respect: +37
    • Google+
    • 347516210
    • dark_pinz
    • @WandDStudios
    • Mostra profilo
    • W&D Studios
  • Dispositivo Android:
    HTC One X e HTC One
  • Play Store ID:
    W%26D+Studios
  • Sistema operativo:
    Ubuntu / Windows 7
Re:android unable to start activity componentinfo java.lang.nullpointerexception
« Risposta #2 il: 29 Ottobre 2014, 13:42:55 CET »
0
Secondo me l'oggetto GoogleMap map è nullo.
I numeri contano molto di più del seme.

Offline mauare

  • Nuovo arrivato
  • *
  • Post: 3
  • Respect: 0
    • Mostra profilo
    • Mauare weSlip! Free
  • Dispositivo Android:
    Samsung Galaxy Note 3
  • Play Store ID:
    Mauare
  • Sistema operativo:
    Ubuntu 13.x
Re:android unable to start activity componentinfo java.lang.nullpointerexception
« Risposta #3 il: 29 Ottobre 2014, 13:52:08 CET »
0
Secondo me l'oggetto GoogleMap map è nullo.

Se imposti il codice come dice Bradipao e metti un messaggio di avviso con un Toast o con un Log, saprai se map punta a null

Offline ValerioAdo

  • Utente normale
  • ***
  • Post: 319
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Huawei Ascend g525
  • Sistema operativo:
    windows 8.1
Re:android unable to start activity componentinfo java.lang.nullpointerexception
« Risposta #4 il: 29 Ottobre 2014, 13:53:15 CET »
0
grazie mille :D ora funziona ^^ e sul mio dispositivo fisico ho la mia bella mappa di google ^^