Завершить или уничтожить действие при нажатии кнопки Listview после запуска другого действия

У меня есть Activity ListActivity с Listview, а другой класс CustomListAdapter расширяет BaseAdapter.

Код в ListActivity

customAdapter = new CustomListAdapter(list);
TripList.setAdapter(customAdapter);

В getView() CustomListAdapter я раздуваю макет. есть кнопка, и при нажатии этой кнопки я начинаю другое действие.

Я хочу закончить ListActivity после начала другого действия. С приведенным ниже кодом мое приложение дает сбой.

((Activity) ctx).finish();

Журнал

01-05 11:06:04.319: E/AndroidRuntime(4319): FATAL EXCEPTION: main
01-05 11:06:04.319: E/AndroidRuntime(4319): Process: com.example.myapp, PID: 4319
01-05 11:06:04.319: E/AndroidRuntime(4319): java.lang.NullPointerException
01-05 11:06:04.319: E/AndroidRuntime(4319):     at com.example.myapp.CustomListAdapter$1.onClick(CustomListAdapter.java:71)

Пожалуйста, помогите мне.


person manjari    schedule 05.01.2016    source источник
comment
хорошо, тогда выложи свой логкэт   -  person IntelliJ Amiya    schedule 05.01.2016
comment
Вы пытаетесь использовать intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP| Intent.FLAG_ACTIVITY_NEW_TASK); , в этом случае не используйте finish()   -  person Danh DC    schedule 05.01.2016
comment
#manjari : Проверьте мой ответ. Пожалуйста, дайте мне отзыв.   -  person IntelliJ Amiya    schedule 05.01.2016


Ответы (3)


Сначала вы можете опубликовать свой Logcat .

FLAG_ACTIVITY_CLEAR_TOP

Если установлено, и запускаемое действие уже выполняется в текущей задаче, то вместо запуска нового экземпляра этого действия все другие действия поверх него будут закрыты, и это намерение будет доставлено в (сейчас на вверху) старая деятельность как новое намерение.

FLAG_ACTIVITY_NEW_TASK

если он используется для запуска корневого действия задачи, он переведет любой запущенный в данный момент экземпляр этой задачи на передний план, а затем очистит его до корневого состояния.

Вы можете использовать Intent.FLAG_ACTIVITY_CLEAR_TOP |Intent.FLAG_ACTIVITY_NEW_TASK

Наконец-то должно быть,

   Intent intent = new Intent(ctx, NewActivityName.Class);
   intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP |Intent.FLAG_ACTIVITY_NEW_TASK);
   intent.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
   startActivity(intent);
person IntelliJ Amiya    schedule 05.01.2016
comment
Извините, это не работает. После нажатия кнопки «Назад» на устройстве эта активность снова отображается. - person manjari; 05.01.2016
comment
Это дает ошибку. Метод finish() не определен для типа new View.OnClickListener(){} - person manjari; 05.01.2016
comment
@манджари Джи. Все в порядке. Можете ли вы опубликовать свой общий код? вы получаете сейчас NullPointerException - person IntelliJ Amiya; 05.01.2016
comment
Спасибо . Это было решено. Поскольку я начинал действие внутри getView(), поэтому только finish() не работал. Я просто изменил его на ((Activity)parent.getContext()).finish(); - person manjari; 05.01.2016

Замените название вашего действия на новое действие .

startActivity(new Intent(ctx,NewActivity.class));
((Activity) ctx).finish();
person Aditay Kaushal    schedule 05.01.2016

Поскольку я запускал действие внутри getView(), поэтому ((Activity) ctx).finish(); не работал. Я просто изменил его на ((Activity)parent.getContext()).finish();, и это сработало.

person manjari    schedule 05.01.2016
comment
Удачного кодирования. Двигаться дальше . - person IntelliJ Amiya; 05.01.2016