Невозможно начать действие ComponentInfo: java.lang.NullPointerException - PullRequest
2 голосов
/ 09 февраля 2012

Exception:

Unable to start activity ComponentInfo{com.scytec.datamobile.vd.gui.android/com.scytec.datamobile.vd.gui.android.SelectedList}: java.lang.NullPointerException.. Я просто хочу показывать список флажков, и при каждой проверке он отображает «проверено», просто, но я не знаю, почему это дает мне исключение.

public class SelectedList extends Activity implements IObserver{

        private ListView machine_listview;
        ArrayAdapter<String> adapter;
        ArrayList<String> arrayListofMachines;
        ArrayList<String> arrayListofMachineNumbers;
        Vector<MDCMachineStatus> machineStatus_vector;
        Handler handler;

        private static int oldPosition = 0;
        private Boolean firstClick = true;




        @Override
        protected void onCreate(Bundle savedInstanceState) {
            // TODO Auto-generated method stub
            super.onCreate(savedInstanceState);
            setContentView(R.layout.machinelistview);

            machine_listview = (ListView) findViewById(R.id.machine_listview);
            machine_listview.setFastScrollEnabled(true);

            MachineStatusSingleton.Register(this);

            getData();

            adapter = new ArrayAdapter<String>(SelectedList.this, R.layout.selectedlist,R.id.text1, arrayListofMachines);

            machine_listview.setAdapter(adapter);

            machine_listview.setSelection(oldPosition);


            CheckBox chk=(CheckBox)findViewById(R.id.check);
            chk.setOnCheckedChangeListener(new OnCheckedChangeListener()
            {

       public void onCheckedChanged(CompoundButton arg0, boolean arg1) {
        TextView txt=(TextView)findViewById(R.id.xtra);
        if (arg1)
            Log.d("", "abul, checked") ;
        else
             Log.d("", "abul, not checked") ;

       }

            }
            );


            machine_listview.setOnItemClickListener(new OnItemClickListener() {

                public void onItemClick(AdapterView<?> arg0, View arg1, int position,
                        long arg3) {
                    // TODO Auto-generated method stub
                    oldPosition = position;
                    MachineStatusSingleton.setMachineNumber(arrayListofMachineNumbers.get(position));
                    SelectedList.this.finish();


                }

            });


            handler = new Handler(){
                public void handleMessage(android.os.Message msg) {


                    machine_listview.setAdapter(adapter);
                    adapter.notifyDataSetChanged();

                };
            };






        }

        public void Update(ISubject arg0) {
            // TODO Auto-generated method stub
        }

        @Override
        public void onDestroy()
        {
            super.onDestroy();

            MachineStatusSingleton.Unregister(this);
        }

        private void getData(){
            machineStatus_vector = MachineStatusSingleton.GetData();
            arrayListofMachines = new ArrayList<String>();
            arrayListofMachineNumbers = new ArrayList<String>();
            for(MDCMachineStatus temp: machineStatus_vector){
                arrayListofMachines.add(temp.toString());
                arrayListofMachineNumbers.add(temp.getNumber());
            }

            Collections.sort(arrayListofMachines);
            Collections.sort(arrayListofMachineNumbers);

        }


        private void updateData(){
            getData();

            handler.sendEmptyMessage(0);
            adapter.notifyDataSetChanged();
            int index = machine_listview.getFirstVisiblePosition();
            View v = machine_listview.getChildAt(0);
            int top = (v == null) ? 0 : v.getTop();

            // ...

            // restore
            machine_listview.setSelectionFromTop(index, top);
        }


    }

Ответы [ 3 ]

11 голосов
/ 27 мая 2014

Мы очень хорошо запускаем наше приложение, и внезапно мы сталкиваемся с NullPointerException или Невозможно запустить операцию и т. Д.1009 * Невозможно начать действие происходит, когда есть проблема в методе onCreate () нашей Деятельности.

Это происходит, когда:

  1. Мы изменяем любые значения XML в макете, относящиеся к этому занятию

  2. Если мы не отображаем пользовательский интерфейс XML должным образом в нашей деятельности

  3. Попробуйте получить доступ к пользовательскому интерфейсу, который находится в другом файле макета.

Решение:

  1. Первый перекрестный контроль всехсопоставленные элементы

  2. Дать уникальное имя

9 голосов
/ 11 февраля 2012

Непосредственно после:
TextView txt = (TextView) findViewById (R.id.xtra);

... добавить это:
if (txt == null) {Log.w("", "TextView is null");}

Предполагается, что исключение нулевого указателя не произойдет, пока вы не установите флажок, что звучит как наиболее вероятная проблема.Я столкнулся с тем же, когда я забыл, что я удалил соответствующий элемент из макета XML, или если я неправильно понял идентификатор.Обычно я обертываю любые действия с элементом, возвращаемым «findViewById», в рамках нулевой проверки, чтобы гарантировать, что даже в случае сбоя извлечения приложение, по крайней мере, не завершится сбоем.

1 голос
/ 16 ноября 2012

Похоже, вы присваиваете chk, а затем, txt, вызывая findViewById, как вы их объявляете. Я должен был сначала объявить их, а затем присвоить им, используя findViewById.

...