2013-07-15 2 views
0

Я занимаюсь разработкой Android. Я создал кнопку в основной деятельности, которая открывает вторую активность:О создании нового намерения в android

Я использую этот код для кнопки:

this.detailsBtn = (Button) findViewById(R.id.details_btn); 
    this.detailsBtn.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View arg0) { 
      Intent k = new Intent(arg0.getContext(), DetailsActivity.class); 
      startActivity(k); 
     } 
    }); 

Этот код работает правильно, как он открывает вторую деятельность. Я также добавил кнопку, которая возвращает к основной деятельности в DetailActivity.

this.mainListBtn = (Button) findViewById(R.id.main_list_btn); 
    this.mainListBtn.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View arg0) { 
      Intent k = new Intent(arg0.getContext(), MainActivity.class); 
      startActivity(k); 
     } 
    }); 

Это также работает должным образом. Мой вопрос в том, должен ли я создавать новый Intent каждый раз, когда я нажимаю все кнопки, так как кажется, что для открытия нового действия требуется некоторое время?

Есть ли способ получить доступ к намерению, которое уже создано вместо его воссоздания?

+0

http://stackoverflow.com/questions/ 1624338/android-return-to-previous-activity-without-call-finish http://developer.android.com/reference/android/content/Intent.html#setFlags%28int –

+0

Создание объекта 'Intent' doesn ' t принимать сколько угодно времени. Время, необходимое для открытия операции, используется любым кодом, который вы получили в 'onCreate()', 'onStart()' и 'onResume()'. Вы можете посмотреть там, если хотите оптимизировать свой код. –

ответ

2

называют только finish() в DetailsActivity

this.mainListBtn = (Button) findViewById(R.id.main_list_btn); 
    this.mainListBtn.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View arg0) { 
      finish(); 
     } 
    }); 

Это также работает должным образом. Мой вопрос в том, должен ли я создавать новый Intent каждый раз, когда я нажимаю все кнопки, так как кажется, что требуется какое-то время, чтобы открыть новую активность?

Ваше текущее приложение работает отлично, я согласился. Но что произойдет, новая активность добавится в стек приложения каждый раз при нажатии кнопки. Это не должно произойти в вашем случае.

+0

Работает отлично, и это то, что мне нужно для моего приложения. У меня есть список подробностей, поэтому после того, как они будут рассмотрены, информация должна быть закрыта и уничтожена. – Vlad

+0

Gud .. рад узнать, что ваша проблема решена :) –

1

Вы можете открыть доступ к ранее открытому действию, также вы можете позвонить onBackPressed(); функция к предыдущей деятельности.

+1

Вы не должны называть '' onBackPressed() 'для завершения' Activity'. Просто наберите 'finish()'. 'onBackPressed()' вызывается инфраструктурой Android. –

+0

finish() уничтожает текущую активность. Если вы вызываете метод finish() после startActivity(), вы не должны вызывать onBackPressed(), и это не работает, потому что предыдущая активность уничтожена. – KEYSAN

+0

Если вы вызываете 'onBackPressed()', все, что делает, это вызов 'finish()' для текущей активности. Но, как я уже сказал, этот метод предназначен для Android-платформы, а не для вашей активности. Он доступен, чтобы ваша деятельность могла ** переопределить его ** при необходимости, а не так, чтобы вы могли ** называть его **. –

1

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

Intent i = new Intent(getActivity(), B.class); 
i.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); 
getActivity().startActivity(i); 
Смежные вопросы