ошибка Unable to stop activity

Activity Lifecycle, Saving Activity State, Managing Tasks, Intent, Intent Filter
Ответить
Аватара пользователя
Beeyan
Сообщения: 4
Зарегистрирован: 11 сен 2013, 23:35

ошибка Unable to stop activity

Сообщение Beeyan » 12 сен 2013, 00:08

Здравствуйте, возникла ошибка при переходе к новой активности.
В исходной активности реализовано подключение к БД и вывод в спинер информации о "Людях". При выборе элемента из списка возвращается id человека, которое передается в новую активность по нажатию на кнопку.

Код: Выделить всё


import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.database.Cursor;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.SimpleCursorAdapter;
import android.widget.Spinner;

public class MainActivity extends Activity {
	
	
	String LOG_TAG="myLogs";
	
	Spinner snFind;
	DB db;
	Cursor cursor;
	SimpleCursorAdapter scAdapter;
	String IdPeople;
	Intent intent;
	
	int to[]={R.id.tvPid, R.id.tvPsname,R.id.tvPsname,R.id.tvPgroup};
	String from[]={DB.COLUMN_PEOPLE_ID, DB.COLUMN_PEOPLE_SNAME,DB.COLUMN_PEOPLE_NAME,DB.COLUMN_PEOPLE_GROUP};
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		snFind=(Spinner) findViewById(R.id.snFind);

		db= new DB(this);
		db.open();
		
		startManagingCursor(cursor);
		cursor= db.showTableData(DB.TABLE_PEOPLE, false);
		 scAdapter= new SimpleCursorAdapter(this, R.layout.itemp, cursor, from, to);
		 snFind.setAdapter(scAdapter) ;
		 snFind.setOnItemSelectedListener( new OnItemSelectedListener(){

			@Override
			public void onItemSelected(AdapterView<?>  parent, View view,
					int position, long id) { // TODO Auto-generated method stub	
				IdPeople= id+"";
				Log.d(LOG_TAG,"mhy IdPeople="+"("+IdPeople+")");	}

			@Override
			public void onNothingSelected(AdapterView<?> arg0) {
				// TODO Auto-generated method stub
				
			}} );
		 	}
	
	public void clickStart (View v){
		intent= new Intent(this, Statistic.class);
		intent.putExtra("id", IdPeople);
		db.close();
		
		startActivity(intent);
		
	}
}
логи:
  • 09-11 22:21:23.503: E/AndroidRuntime(902): FATAL EXCEPTION: main
    09-11 22:21:23.503: E/AndroidRuntime(902): java.lang.RuntimeException: Unable to stop activity {com.example.myapplicatuin_mytest_v1/com.example.myapplicatuin_mytest_v1.MainActivity}: java.lang.NullPointerException
    09-11 22:21:23.503: E/AndroidRuntime(902): at android.app.ActivityThread.performStopActivityInner(ActivityThread.java:3142)
    09-11 22:21:23.503: E/AndroidRuntime(902): at android.app.ActivityThread.handleStopActivity(ActivityThread.java:3188)
    09-11 22:21:23.503: E/AndroidRuntime(902): at android.app.ActivityThread.access$900(ActivityThread.java:141)
    09-11 22:21:23.503: E/AndroidRuntime(902): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1261)
    09-11 22:21:23.503: E/AndroidRuntime(902): at android.os.Handler.dispatchMessage(Handler.java:99)
    09-11 22:21:23.503: E/AndroidRuntime(902): at android.os.Looper.loop(Looper.java:137)
    09-11 22:21:23.503: E/AndroidRuntime(902): at android.app.ActivityThread.main(ActivityThread.java:5041)
    09-11 22:21:23.503: E/AndroidRuntime(902): at java.lang.reflect.Method.invokeNative(Native Method)
    09-11 22:21:23.503: E/AndroidRuntime(902): at java.lang.reflect.Method.invoke(Method.java:511)
    09-11 22:21:23.503: E/AndroidRuntime(902): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
    09-11 22:21:23.503: E/AndroidRuntime(902): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
    09-11 22:21:23.503: E/AndroidRuntime(902): at dalvik.system.NativeStart.main(Native Method)
    09-11 22:21:23.503: E/AndroidRuntime(902): Caused by: java.lang.NullPointerException
    09-11 22:21:23.503: E/AndroidRuntime(902): at android.app.Activity.performStop(Activity.java:5258)
    09-11 22:21:23.503: E/AndroidRuntime(902): at android.app.ActivityThread.performStopActivityInner(ActivityThread.java:3139)
    09-11 22:21:23.503: E/AndroidRuntime(902): ... 11 more

Аватара пользователя
Mikhail_dev
Сообщения: 2386
Зарегистрирован: 09 янв 2012, 14:45
Откуда: Самара

Re: ошибка Unable to stop activity

Сообщение Mikhail_dev » 12 сен 2013, 08:46

Вот основная ошибка, java.lang.NullPointerException, где-то его славливаете в основной активности

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: ошибка Unable to stop activity

Сообщение Foenix » 12 сен 2013, 13:10

Кстати, переменную, передаваемую во вторую активити, по-любому нужно инициализировать вначале (т.е. присвоить ей хоть какое-то осмысленное значение). Может как раз в ней у вас null
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

Аватара пользователя
Mikhail_dev
Сообщения: 2386
Зарегистрирован: 09 янв 2012, 14:45
Откуда: Самара

Re: ошибка Unable to stop activity

Сообщение Mikhail_dev » 12 сен 2013, 13:24

Самое веселое, что я такой же баг словил сегодня с утра и что более интересно, что я НЕ знаю где он.
2013-09-12 08:50:59+0400 [main] Exception: java.lang.RuntimeException
Exception message: Unable to destroy activity {ru.lab_m.whowhere/ru.lab_m.whowhere.UI.MainActivity}: java.lang.NullPointerException
Exception stacktrace follows:
android.app.ActivityThread.performDestroyActivity(ActivityThread.java:3115)
android.app.ActivityThread.handleDestroyActivity(ActivityThread.java:3133)
android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:3331)
android.app.ActivityThread.access$700(ActivityThread.java:126)
android.app.ActivityThread$H.handleMessage(ActivityThread.java:1154)
android.os.Handler.dispatchMessage(Handler.java:99)
android.os.Looper.loop(Looper.java:137)
android.app.ActivityThread.main(ActivityThread.java:4456)
java.lang.reflect.Method.invokeNative(Native Method)
java.lang.reflect.Method.invoke(Method.java:511)
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:787)
com.android.internal.os.ZygoteInit.main(ZygoteInit.java:554)
dalvik.system.NativeStart.main(Native Method)
Вроде как ошибка в onDestroy, в MainActivity, да вот беда, что метод я не переопределял. И в стектрейсе вы тоже не найдете ничего, что указывает на ошибку в коде. Переопределил. Поставил различного рода проверки, логгинг, буду ловить что там падает. Упало единожды, так что какая-то нетривиальная ошибка.
Инна, это как раз к твоему ответу о том, что NullPointerException - легкая ошибка. В большинстве случаев может оно и так, но совершенно не факт, что она не возникает по какой-то адовой причине. К примеру, у меня бывало что Nullpointer при каждом запуске выскакивал на РАЗЛИЧНЫХ объектах, РАЗЛИЧНЫХ фрагментов. Т.е. летал сам себе NullPointerException повсюду, куда хотел, туда и приземлялся. Всё оказалось тривиально. Fragment создается асихронно, а так как я использовал ViewPager и работал периодически с фрагментами сразу же, то он мне устраивал такую карусель сам, как хотел.
Таких странных событий было штук пять на памяти, но всё же были.

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: ошибка Unable to stop activity

Сообщение Foenix » 12 сен 2013, 13:35

:-D
Миш, если сказать человеку, что это самая сложная ошибка, то он вообще программировать перестанет. Настрой должен быть хороший) Кроме того, я ведь имела ввиду новичков, а у них 90% таких ошибок находятся сразу, т.к. они сами его создают (а не андроид им подсовывает). Это хорошая ставка.
(ну изменяй название своей второй статьи на "почти всегда" ) :-D
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: ошибка Unable to stop activity

Сообщение Foenix » 12 сен 2013, 13:37

В коде выше, кстати, есть моменты, тот же startmanagingcursor, которые могли бы привести к такому поведению активити. Ну и еще парочка.
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

Аватара пользователя
Beeyan
Сообщения: 4
Зарегистрирован: 11 сен 2013, 23:35

Re: ошибка Unable to stop activity

Сообщение Beeyan » 12 сен 2013, 14:36

Foenix писал(а):В коде выше, кстати, есть моменты, тот же startmanagingcursor, которые могли бы привести к такому поведению активити. Ну и еще парочка.
Спасибо, ошибка пропала после удаления startmanagingcursor.

Но у меня есть вопрос, здесь то понятно этот метод был лишним тк я не обновляю данные списка, но как быть если бы я обновлял данные? Повторять нужный запрос после каждого обновления или есть какой-то схожий метод?

Аватара пользователя
Mikhail_dev
Сообщения: 2386
Зарегистрирован: 09 янв 2012, 14:45
Откуда: Самара

Re: ошибка Unable to stop activity

Сообщение Mikhail_dev » 12 сен 2013, 14:46

Foenix писал(а)::-D
(ну изменяй название своей второй статьи на "почти всегда" ) :-D
Да вот не могу, название темы имеет ограниченное кол-во символов. Так что пожалуй, пусть остаётся так. :lol:

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: ошибка Unable to stop activity

Сообщение Foenix » 12 сен 2013, 19:05

суть данного метода вообще не в обновлении результатов запроса!
кроме того, можете с ним не заморачиваться - он безнадежно deprecated
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

Ответить