Autore Topic: Errore avvio applicazione dopo inserimento ListView con layout personalizzato  (Letto 268 volte)

Offline Lorenzo993

  • Nuovo arrivato
  • *
  • Post: 7
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Nessuno, strano ma vero...
  • Sistema operativo:
    Windows 8
Ho seguito il tutorial di Ricky per l'inserimento dela listview con layout persoalizzato: http://www.anddev.it/index.php/topic,432.0.html
solo che l'applicazione non parte.

Codice: [Seleziona]
03-22 14:58:25.808: E/AndroidRuntime(2225): FATAL EXCEPTION: main

03-22 14:58:25.808: E/AndroidRuntime(2225): Process: com.android.slidingmenuexample, PID: 2225

03-22 14:58:25.808: E/AndroidRuntime(2225): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.android.slidingmenuexample/com.android.slidingmenuexample.MainActivity}: java.lang.NullPointerException

03-22 14:58:25.808: E/AndroidRuntime(2225):         at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2195)

03-22 14:58:25.808: E/AndroidRuntime(2225):         at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245)

03-22 14:58:25.808: E/AndroidRuntime(2225):         at android.app.ActivityThread.access$800(ActivityThread.java:135)

03-22 14:58:25.808: E/AndroidRuntime(2225):         at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)

03-22 14:58:25.808: E/AndroidRuntime(2225):         at android.os.Handler.dispatchMessage(Handler.java:102)

03-22 14:58:25.808: E/AndroidRuntime(2225):         at android.os.Looper.loop(Looper.java:136)

03-22 14:58:25.808: E/AndroidRuntime(2225):         at android.app.ActivityThread.main(ActivityThread.java:5017)

03-22 14:58:25.808: E/AndroidRuntime(2225):         at java.lang.reflect.Method.invokeNative(Native Method)

03-22 14:58:25.808: E/AndroidRuntime(2225):         at java.lang.reflect.Method.invoke(Method.java:515)

03-22 14:58:25.808: E/AndroidRuntime(2225):         at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)

03-22 14:58:25.808: E/AndroidRuntime(2225):         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)

03-22 14:58:25.808: E/AndroidRuntime(2225):         at dalvik.system.NativeStart.main(Native Method)

03-22 14:58:25.808: E/AndroidRuntime(2225): Caused by: java.lang.NullPointerException

03-22 14:58:25.808: E/AndroidRuntime(2225):         at com.android.slidingmenuexample.MainActivity.onCreate(MainActivity.java:49)

03-22 14:58:25.808: E/AndroidRuntime(2225):         at android.app.Activity.performCreate(Activity.java:5231)

03-22 14:58:25.808: E/AndroidRuntime(2225):         at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)

03-22 14:58:25.808: E/AndroidRuntime(2225):         at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2159)

03-22 14:58:25.808: E/AndroidRuntime(2225):         ... 11 more

questo è il mainactivity:
Codice: [Seleziona]
package com.android.slidingmenuexample;

import java.util.ArrayList;
import java.util.Random;

import android.graphics.Typeface;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.TextView;


public class MainActivity extends FragmentActivity {

        MainLayout mLayout;
        private ListView lvMenu;
        private String[] lvMenuItems;
        Button btMenu;
        TextView tvTitle;

    ListView listView;
    PersonAdapter personAdapter;

       
        @Override
        protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);

                mLayout = (MainLayout) this.getLayoutInflater().inflate(
                                R.layout.activity_main, null);
                setContentView(mLayout);
               
                listView = (ListView) findViewById(R.id.personListView);

        personAdapter = new PersonAdapter(this, R.layout.row_item,
                        new ArrayList<Person>());

        listView.setAdapter(personAdapter);

        new BackgroundWorker().execute();
       
               
                lvMenuItems = getResources().getStringArray(R.array.menu_items);
                lvMenu = (ListView) findViewById(R.id.menu_listview);
                lvMenu.setAdapter(new ArrayAdapter<String>(this,
                                android.R.layout.simple_list_item_1, lvMenuItems));
                lvMenu.setOnItemClickListener(new OnItemClickListener() {
                        @Override
                        public void onItemClick(AdapterView<?> parent, View view,
                                        int position, long id) {
                                onMenuItemClick(parent, view, position, id);
                        }

                });

                btMenu = (Button) findViewById(R.id.button_menu);
                btMenu.setOnClickListener(new OnClickListener() {
                        @Override
                        public void onClick(View v) {
                                // Show/hide the menu
                                toggleMenu(v);
                        }
                });

                tvTitle = (TextView) findViewById(R.id.activity_main_content_title);

                FragmentManager fm = MainActivity.this.getSupportFragmentManager();
                FragmentTransaction ft = fm.beginTransaction();
                Layout1 fragment = new Layout1();
                ft.add(R.id.activity_main_content_fragment, fragment);
                ft.commit();

        }

        private class BackgroundWorker extends AsyncTask<Void, Person, Void> {

        @Override
        protected void onPreExecute() {
                // Prima di iniziare a inserire gli elementi svuotiamo l'adapter
                personAdapter.clear();
                super.onPreExecute();
        }

        @Override
        protected Void doInBackground(Void... params) {

                // Qui dentro si possono mettere le operazioni che potrebbero
                // rallentare il caricamento della listview, come ad sempio il
                // caricamento da db degli oggetti

                Person[] people = {
                                new Person("Anna", "Falchi", R.drawable.creep_1),
                                new Person("Cameron", "Diaz", R.drawable.creep_2),
                                new Person("Jessica", "Alba", R.drawable.creep_3),
                                new Person("Manuela", "Arcuri", R.drawable.creep_4) };

                // riempimento casuale della lista delle persone
                Random r = new Random();

                for (int i = 0; i < 200; i++) {
                        // Pubblichiamo il progresso
                        publishProgress(people[r.nextInt(people.length)]);
                }

                return null;
        }
       
        @Override
        protected void onProgressUpdate(Person... values) {
                // Aggiungiamo il progresso pubblicato all'adapter
                personAdapter.add(values[0]);
                super.onProgressUpdate(values);
        }

}
       
        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
                getMenuInflater().inflate(R.menu.main, menu);
                return true;
        }

        public void toggleMenu(View v) {
                mLayout.toggleMenu();
        }

        private void onMenuItemClick(AdapterView<?> parent, View view,
                        int position, long id) {
                String selectedItem = lvMenuItems[position];
                String currentItem = tvTitle.getText().toString();
                if (selectedItem.compareTo(currentItem) == 0) {
                        mLayout.toggleMenu();
                        return;
                }

                FragmentManager fm = MainActivity.this.getSupportFragmentManager();
                FragmentTransaction ft = fm.beginTransaction();
                Fragment fragment = null;

                if (selectedItem.compareTo("Layout 1") == 0) {
                        fragment = new Layout1();
                } else if (selectedItem.compareTo("Layout 2") == 0) {
                        fragment = new Layout2();
                } else if (selectedItem.compareTo("Layout 3") == 0) {
                        fragment = new Layout3();
                } else if (selectedItem.compareTo("Layout 4") == 0) {
                        fragment = new Layout4();
                } else if (selectedItem.compareTo("Layout 5") == 0) {
                        fragment = new Layout5();
                } else if (selectedItem.compareTo("Layout 6") == 0) {
                        fragment = new Layout6();
                }

                if (fragment != null) {
                        ft.replace(R.id.activity_main_content_fragment, fragment);
                        ft.commit();
                        tvTitle.setText(selectedItem);
                }
                mLayout.toggleMenu();
        }

        @Override
        public void onBackPressed() {
                if (mLayout.isMenuShown()) {
                        mLayout.toggleMenu();
                } else {
                        super.onBackPressed();
                }
        }
       
}

qualcuno sa aiutarmi? grazie.
« Ultima modifica: 22 Marzo 2014, 21:15:46 CET da Lorenzo993 »

Offline CrotaNexus

  • Utente normale
  • ***
  • Post: 156
  • Vuolsi così colà dove si puote ciò che si vuole
  • Respect: +25
    • Google+
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    SimoneDev
  • Sistema operativo:
    Windows 8.1
Re:Errore avvio applicazione
« Risposta #1 il: 22 Marzo 2014, 20:57:41 CET »
0
Cerca di inserire un titolo più idoneo alla rapida comprensione e di essere più descrittivo nell'esporre il problema che stai avendo. Visto il modo di aver posto la domanda non è possibile dirti altro al di fuori di: cosa può tornare null alla riga 49 del MainActivity?
SimoneDev @ Google Play Store

Offline Lorenzo993

  • Nuovo arrivato
  • *
  • Post: 7
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Nessuno, strano ma vero...
  • Sistema operativo:
    Windows 8
0
Ho sistemato come hai detto

Post unito: 23 Marzo 2014, 20:15:00 CET
Qualcuno sa aiutarmi?
« Ultima modifica: 23 Marzo 2014, 20:15:00 CET da Lorenzo993, Reason: Merged DoublePost »