Autore Topic: problema avvio app  (Letto 141 volte)

Offline newbie2016

  • Utente junior
  • **
  • Post: 79
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Cubot X9
  • Sistema operativo:
    Windows 7
problema avvio app
« il: 27 Ottobre 2016, 04:27:47 CEST »
0
Salve, l'app di punto in bianco mi restituisce questo errore:

Citazione
E/AndroidRuntime: FATAL EXCEPTION: main
                  Process: com.example.appdemo, PID: 14493
                  java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.appdemo/com.example.appdemo.SecondActivity}: java.lang.NullPointerException
                      at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2377)
                      at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2429)
                      at android.app.ActivityThread.access$800(ActivityThread.java:151)
                      at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1342)
                      at android.os.Handler.dispatchMessage(Handler.java:110)
                      at android.os.Looper.loop(Looper.java:193)
                      at android.app.ActivityThread.main(ActivityThread.java:5333)
                      at java.lang.reflect.Method.invokeNative(Native Method)
                      at java.lang.reflect.Method.invoke(Method.java:515)
                      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:828)
                      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:644)
                      at dalvik.system.NativeStart.main(Native Method)
                   Caused by: java.lang.NullPointerException
                      at com.example.appdemo.SecondActivity.onStart(SecondActivity.java:55)
                      at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1174)
                      at android.app.Activity.performStart(Activity.java:5353)
                      at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2340)
                      at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2429) 
                      at android.app.ActivityThread.access$800(ActivityThread.java:151) 
                      at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1342) 
                      at android.os.Handler.dispatchMessage(Handler.java:110) 
                      at android.os.Looper.loop(Looper.java:193) 
                      at android.app.ActivityThread.main(ActivityThread.java:5333) 
                      at java.lang.reflect.Method.invokeNative(Native Method) 
                      at java.lang.reflect.Method.invoke(Method.java:515) 
                      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:828) 
                      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:644) 
                      at dalvik.system.NativeStart.main(Native Method) 

viene indicata come riga di errore SecondActivity.java:55
Codice (Java): [Seleziona]
edit.setText(nome + " " + cognome);
Il codice completo
Codice (Java): [Seleziona]
protected void onStart() {
        super.onStart();
        String TokenSave = "TokenSave";
        SharedPreferences prefs = getSharedPreferences(TokenSave, Context.MODE_PRIVATE);
        String token = prefs.getString("token", "Nessun Token Salvato");
        String nome = prefs.getString("nome", "Nessun nome Salvato");
        String cognome = prefs.getString("cognome", "Nessun cognome Salvato");
        String cel = prefs.getString("cel", "Nessun cel Salvato");
        TextView edit = (TextView)findViewById(R.id.titolo);
        [b]edit.setText(nome + " " + cognome);[/b]
        TextView celEdit = (TextView)findViewById(R.id.telEdit);
        celEdit.setText(cel);
    }

se elimino queste due righe l'app si avvia però non visualizza nel nav_header_main "Nome e Cognome" e "Cellulare":
Codice (Java): [Seleziona]
 [b]edit.setText(nome + " " + cognome);
        celEdit.setText(cel);[/b]

scrivo anche le dependencies del build.gradle (app) :
Citazione
dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:support-v4:23.1.1'
    compile 'com.android.support:appcompat-v7:23.1.1'
    compile 'com.android.support:design:23.1.1'
    compile 'cz.msebera.android:httpclient:4.4.1.1'
    compile 'com.google.android.gms:play-services-identity:8.4.0'
    compile 'com.firebase:firebase-client-android:2.3.1'
    compile 'com.google.android.gms:play-services-gcm:8.4.0'
    compile 'com.google.android.gms:play-services-appindexing:8.4.0'
    compile 'com.makeramen:roundedimageview:2.2.1'
    // RecyclerView
    compile 'com.android.support:recyclerview-v7:23.3.+'
    // CardView
    compile 'com.android.support:cardview-v7:23.3.+'
    compile 'com.facebook.android:facebook-android-sdk:4.16.1'
}

Che errore è?
Come posso risolverlo?

Grazie

Offline NetGEL

  • Utente normale
  • ***
  • Post: 196
  • Respect: +9
    • Google+
    • Mostra profilo
  • Play Store ID:
    NetGEL
Re:problema avvio app
« Risposta #1 il: 27 Ottobre 2016, 09:42:23 CEST »
0
Dall'errore che hai postato e da quello che dici sembra che gli oggetti R.id.titolo e R.id.telEdit non vengano trovati quindi le TextView edit e celEdit sono null.
Per questa ragione l'errore che ti restituisce quando cerchi di fare setText è java.lang.NullPointerException

Offline newbie2016

  • Utente junior
  • **
  • Post: 79
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Cubot X9
  • Sistema operativo:
    Windows 7
Re:problema avvio app
« Risposta #2 il: 27 Ottobre 2016, 11:04:31 CEST »
0
gli oggetti R.id.titolo e R.id.telEdit sono nel nav_header_main.xml
Ma fino a ieri li ha sempre trovati, non è stato modificato nulla.

Codice (XML): [Seleziona]
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:paddingTop="20dp"
android:paddingBottom="20dp"
android:background="@color/colorPrimaryDark"
android:theme="@drawable/side_nav_bar"
android:layout_width="match_parent"
android:layout_height="190dp">

<ImageView
   android:src="@drawable/logo"
   android:layout_width="wrap_content"
   android:layout_gravity="center"
   android:layout_weight="1"
   android:layout_height="wrap_content" />
<TextView
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:textAppearance="?android:attr/textAppearanceLarge"
   android:text="Large Text"
   android:id="@+id/titolo"
   android:textSize="25dp"
   android:textColor="@color/drawer_item_text"
   android:layout_marginLeft="15dp" />

<TextView
   android:id="@+id/telEdit"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:text="android.studio@android.com"
   android:textColor="@color/item_row_hover_end_color"
   android:layout_marginLeft="15dp" />
</LinearLayout>

se inserisco nella activity
Codice (XML): [Seleziona]
<TextView
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:textAppearance="?android:attr/textAppearanceLarge"
   android:text="Large Text"
   android:id="@+id/titolo"
   android:textSize="25dp"
   android:textColor="@color/drawer_item_text"
   android:layout_marginLeft="15dp" />

<TextView
   android:id="@+id/telEdit"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:text="android.studio@android.com"
   android:textColor="@color/item_row_hover_end_color"
   android:layout_marginLeft="15dp" />

la app non crasha, però nel nav_header_main.xml non visualizza nulla.

Come mai?

Offline NetGEL

  • Utente normale
  • ***
  • Post: 196
  • Respect: +9
    • Google+
    • Mostra profilo
  • Play Store ID:
    NetGEL
Re:problema avvio app
« Risposta #3 il: 27 Ottobre 2016, 11:09:40 CEST »
0
Nella onCreate dovresti avere una cosa del genere

Codice (Java): [Seleziona]
setContentView(R.layout.nav_header_main);
a questo punto la tua activity sa che deve prendere quegli oggetti nell'xml con quel nome.

Spero di aver capito giusto


Offline newbie2016

  • Utente junior
  • **
  • Post: 79
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Cubot X9
  • Sistema operativo:
    Windows 7
Re:problema avvio app
« Risposta #4 il: 27 Ottobre 2016, 11:21:50 CEST »
0
questo è il codice della SecondActivity.java

Codice (Java): [Seleziona]
public class SecondActivity extends AppCompatActivity
        implements NavigationView.OnNavigationItemSelectedListener {
    EditText m_EditText;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_two);

        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);


        DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
        ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
                this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
        drawer.setDrawerListener(toggle);
        toggle.syncState();

        NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
        navigationView.setNavigationItemSelectedListener(this);
        navigationView.getMenu().getItem(0).setChecked(true);
    }
    private void ShareWhatsApp()
    {
        PackageManager pm = getPackageManager();
        try
        {

            Intent waIntent = new Intent(Intent.ACTION_SEND);
            waIntent.setType("text/plain");
            String text = m_EditText.getText().toString();

            PackageInfo info = pm.getPackageInfo("com.whatsapp",
                    PackageManager.GET_META_DATA);
            //Check if package exists or not. If not then code
            //in catch block will be called
            waIntent.setPackage("com.whatsapp");

            waIntent.putExtra(Intent.EXTRA_TEXT, text);
            startActivity(Intent.createChooser(waIntent, "Share with"));

        }
        catch (PackageManager.NameNotFoundException e)
        {
            Toast.makeText(this, "WhatsApp not Installed", Toast.LENGTH_SHORT)
                    .show();
        }
    }

    @Override
    protected void onStart() {
        super.onStart();
        String TokenSave = "TokenSave";
        SharedPreferences prefs = getSharedPreferences(TokenSave, Context.MODE_PRIVATE);
        String token = prefs.getString("token", "Nessun Token Salvato");
        String nome = prefs.getString("nome", "Nessun nome Salvato");
        String cognome = prefs.getString("cognome", "Nessun cognome Salvato");
        String cel = prefs.getString("cel", "Nessun cel Salvato");
        TextView edit = (TextView)findViewById(R.id.titolo);
        edit.setText(nome + " " + cognome);
        TextView celEdit = (TextView)findViewById(R.id.telEdit);
        celEdit.setText(cel);
    }

    @Override
    public void onBackPressed() {
        DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
        if (drawer.isDrawerOpen(GravityCompat.START)) {
            drawer.closeDrawer(GravityCompat.START);
        } else {
            super.onBackPressed();
        }
    }

    @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.call){
            Intent call = new Intent(Intent.ACTION_DIAL);
            call.setData(Uri.parse("tel:+39067895123"));
            startActivity(call);
        }
        if (id == R.id.whatsapp){
            ShareWhatsApp();
        }
        return super.onOptionsItemSelected(item);
    }

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

    @SuppressWarnings("StatementWithEmptyBody")
    @Override
    public boolean onNavigationItemSelected(MenuItem item) {
        // Handle navigation view item clicks here.
        int id = item.getItemId();

        if (id == R.id.nav_account) {
            startActivity(new Intent("android.intent.action.account"));
        } else if (id == R.id.nav_products) {
            Intent intent = new Intent(SecondActivity.this,product.class);
            TextView telEdit = (TextView)findViewById(R.id.telEdit);
            intent.putExtra("telEdit", telEdit.getText().toString());
            startActivity(intent);
        } else if (id == R.id.nav_news) {
            Intent intent = new Intent(SecondActivity.this,news.class);
            TextView telEdit = (TextView)findViewById(R.id.telEdit);
            intent.putExtra("telEdit", telEdit.getText().toString());
            startActivity(intent);
        } else if (id == R.id.nav_web) {
            Log.d("browser","fatto");
            Intent browser = new Intent(Intent.ACTION_VIEW).setData(Uri.parse("http://www.sitoincostruzione.it"));
            startActivity(browser);
        }

        DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
        drawer.closeDrawer(GravityCompat.START);
        return true;
    }
}

Nella onCreate richiama l'activity con questo:
Codice (Java): [Seleziona]
setContentView(R.layout.activity_two);

Offline NetGEL

  • Utente normale
  • ***
  • Post: 196
  • Respect: +9
    • Google+
    • Mostra profilo
  • Play Store ID:
    NetGEL
Re:problema avvio app
« Risposta #5 il: 27 Ottobre 2016, 11:26:01 CEST »
0
Fermo fermo. Tu hai la prima activity che è R.layout.nav_header_main e dalla prima activity chiami una seconda activity R.layout.activity_two ho capito bene?

Offline newbie2016

  • Utente junior
  • **
  • Post: 79
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Cubot X9
  • Sistema operativo:
    Windows 7
Re:problema avvio app
« Risposta #6 il: 27 Ottobre 2016, 11:32:20 CEST »
0
Allora questa è la composizione della prima activity

activity_two.xml
Codice (XML): [Seleziona]
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:app="http://schemas.android.com/apk/res-auto"
   xmlns:tools="http://schemas.android.com/tools"
   android:id="@+id/drawer_layout"
   android:layout_width="match_parent"
   android:layout_height="match_parent"
   android:fitsSystemWindows="true"
   tools:openDrawer="start">

    <include
       layout="@layout/app_bar_main2"
       android:layout_width="match_parent"
       android:layout_height="match_parent" />

    <android.support.design.widget.NavigationView
       android:id="@+id/nav_view"
       android:layout_width="wrap_content"
       android:layout_height="match_parent"
       android:layout_gravity="start"
       android:fitsSystemWindows="true"
       app:headerLayout="@layout/nav_header_main"
       app:menu="@menu/activity_main_drawer" />

</android.support.v4.widget.DrawerLayout>

include app_bar_main2.xml

Codice (XML): [Seleziona]
<android.support.design.widget.CoordinatorLayout
   xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:app="http://schemas.android.com/apk/res-auto"
   xmlns:tools="http://schemas.android.com/tools"
   android:layout_width="match_parent"
   android:layout_height="match_parent"
   android:fitsSystemWindows="true"
   tools:context="com.giuseppemorra.lavanderiaverdeacqua.SecondActivity">

    <android.support.design.widget.AppBarLayout
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
       android:theme="@style/AppTheme.AppBarOverlay">

        <android.support.v7.widget.Toolbar
           android:id="@+id/toolbar"
           android:layout_width="match_parent"
           android:layout_height="?attr/actionBarSize"
           android:background="?attr/colorPrimary"
           app:popupTheme="@style/AppTheme.PopupOverlay" />

    </android.support.design.widget.AppBarLayout>

    <include layout="@layout/content_main" />


</android.support.design.widget.CoordinatorLayout>

che include content_main.xml

Codice (XML): [Seleziona]
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:app="http://schemas.android.com/apk/res-auto"
   xmlns:tools="http://schemas.android.com/tools"
   android:layout_width="match_parent"
   android:layout_height="match_parent"
   android:paddingBottom="@dimen/activity_vertical_margin"
   android:paddingLeft="@dimen/activity_horizontal_margin"
   android:paddingRight="@dimen/activity_horizontal_margin"
   android:paddingTop="@dimen/activity_vertical_margin"
   app:layout_behavior="@string/appbar_scrolling_view_behavior"
   tools:context="com.example.appdemo.SecondActivity"
   tools:showIn="@layout/app_bar_main2">

    <TextView
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
       android:text="Benvenuto su"
       android:id="@+id/textView3"
       android:textAlignment="center"
       android:textSize="18sp" />

    <ImageView
       android:layout_width="150dp"
       android:layout_height="150dp"
       android:layout_below="@+id/textView3"
       android:layout_centerHorizontal="true"
       android:layout_marginTop="30dp"
       android:id="@+id/imageView2"
       android:src="@drawable/logo" />

    <TextView
       android:text="Ver. 1.0"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_below="@+id/imageView2"
       android:layout_centerHorizontal="true"
       android:layout_marginTop="22dp"
       android:id="@+id/textView" />

    <EditText
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
       android:inputType="textMultiLine"
       android:ems="10"
       android:id="@+id/editText"
       android:text="Scarica l'APP Sovranana Lavanderia"
       android:layout_below="@+id/textView"
       android:visibility="invisible" />


</RelativeLayout>


il nav_header_main.xml fa parte della Navigation Drawer Activity

Offline NetGEL

  • Utente normale
  • ***
  • Post: 196
  • Respect: +9
    • Google+
    • Mostra profilo
  • Play Store ID:
    NetGEL
Re:problema avvio app
« Risposta #7 il: 27 Ottobre 2016, 11:39:58 CEST »
0
Ok. Tu richiami l'xml R.layout.activity_two ma all'interno degli xml non esistono le textview che vuoi caricare.

Offline newbie2016

  • Utente junior
  • **
  • Post: 79
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Cubot X9
  • Sistema operativo:
    Windows 7
Re:problema avvio app
« Risposta #8 il: 27 Ottobre 2016, 11:44:53 CEST »
0
OK. Però prima gli oggetti R.id.titolo e R.id.telEdit venivano visualizzati su nav_header_main.xml
Come mai adesso no?

Come faccio a visualizzare gli oggetti R.id.titolo e R.id.telEdit nel nav_header_main.xml ?

grazie

Offline NetGEL

  • Utente normale
  • ***
  • Post: 196
  • Respect: +9
    • Google+
    • Mostra profilo
  • Play Store ID:
    NetGEL
Re:problema avvio app
« Risposta #9 il: 27 Ottobre 2016, 11:55:50 CEST »
0
Così non dovresti avere problemi

Codice (Java): [Seleziona]
NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
View header = navigationView.getHeaderView(0)
TextView text = (TextView) header.findViewById(R.id.titolo);

Offline newbie2016

  • Utente junior
  • **
  • Post: 79
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Cubot X9
  • Sistema operativo:
    Windows 7
Re:problema avvio app
« Risposta #10 il: 27 Ottobre 2016, 12:10:08 CEST »
0
Nella onStart ho modificato così:

Codice (Java): [Seleziona]
NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
        View header = navigationView.getHeaderView(0);
        TextView edit = (TextView) header.findViewById(R.id.titolo);
        edit.setText(nome + " " + cognome);
        TextView celEdit = (TextView)header.findViewById(R.id.telEdit);
        celEdit.setText(cel);

Funziona!

Grazie NetGEL

Offline NetGEL

  • Utente normale
  • ***
  • Post: 196
  • Respect: +9
    • Google+
    • Mostra profilo
  • Play Store ID:
    NetGEL
Re:problema avvio app
« Risposta #11 il: 27 Ottobre 2016, 12:12:18 CEST »
0
Ottimo. Prego figurati