Intereting Posts
Android google analytics v3: «Сервис недоступен» Как использовать jarsigner для подписания apk? Читать все номера телефонов контакта в android Android Collapsing Toolbar не использует инерцию, например приложение Google Play. В чем разница между контактами и сырыми контактами? Закрепить правильную интерпретацию процента преобразования CSS3 на Android Установка ширины для wrap_content для TextView с помощью кода NPE на Facebook SDK 4.10: попытка вызвать метод интерфейса «java.lang.Object com.facebook.inject.Lazy.get ()» в ссылке на нулевой объект Удаление адресной строки из браузера (для просмотра на Android) Хороший способ получить местоположение пользователя в Android Сбой интерфейса Javascript для Android Proguard Службы Google Play: как обращаться с устройствами, не имеющими Google Play? Каталог данных не имеет права на чтение и запись в Android Как равномерно выделять радиообъективы в Android? Недействительный период обновления виджета Android не работает

Возврат к MainActivity из другого действия

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

Но когда я MainActivity кнопку, чтобы вернуться к MainActivity , я получаю какое-то меню на экране! Кто-то, кто знает, что может быть неправильным? Предоставьте некоторую помощь! Благодаря!

EDIT: кнопка возврата в одном из других действий:

 Button btnReturn1 = (Button) findViewById(R.id.btnReturn1); btnReturn1.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { // TODO Auto-generated method stub Intent returnBtn = new Intent("android.intent.action.MAIN"); startActivity(returnBtn); } }); 

Манифест:

 <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.kullaberg.test02" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="10" android:targetSdkVersion="15" /> <application android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name=".MainActivity" android:label="@string/title_activity_main" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name=".Activity1" android:label="@string/title_activity_main" > <intent-filter> <action android:name="android.intent.action.ACTIVITY001" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </activity> <activity android:name=".Activity2" android:label="@string/title_activity_main" > <intent-filter> <action android:name="android.intent.action.ACTIVITY002" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </activity> <activity android:name=".Activity3" android:label="@string/title_activity_main" > <intent-filter> <action android:name="android.intent.action.ACTIVITY003" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </activity> </application> 

Solutions Collecting From Web of "Возврат к MainActivity из другого действия"

Почему бы вам не называть finish();

Когда вы хотите вернуться в MainActivity

  btnReturn1.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { finish(); } }); 

Вот почему вы увидели меню с кодом, указанным в методе onClick :

Вы создали Intent с конструктором, который берет строку для параметра действия IntentFilter . Вы передали "android.intent.action.MAIN" в качестве аргумента этому конструктору, который указывает, что Intent может быть удовлетворен любым действием с IntentFilter, включая <action="android.intent.action.MAIN"> .

Когда вы вызвали startActivity с этим Intent , вы фактически сказали ОС Android, чтобы найти действие (в любом приложении, установленном в системе), в котором указано действие android.intent.action.MAIN . Когда есть несколько действий, которые соответствуют критериям (и есть в этом случае, поскольку каждое приложение будет иметь основное действие с IntentFilter включая действие "android.intent.action.MAIN" ), ОС представляет меню, позволяющее пользователю выбрать, какие Приложение для использования.

Что касается вопроса о том, как вернуться к вашей основной деятельности, как и в большинстве случаев, это зависит от специфики вашего приложения. Хотя принятый ответ, вероятно, работал в вашем случае, я не думаю, что это лучшее решение, и это, вероятно, побуждает вас использовать неидиоматический интерфейс в своем приложении для Android. Если метод onClick() вашей Button содержит только вызов для finish() вы, скорее всего, должны удалить Button из пользовательского интерфейса и просто позволить пользователю нажать кнопку возврата к программному обеспечению / программному обеспечению, которая имеет одинаковую функциональность и идиоматична для Android. (Вы часто увидите обратные кнопки, используемые для эмуляции поведения iOS UINavigationController navigationBar, который не рекомендуется в приложениях для Android).

Если ваше основное действие запускает стек «Действия» и вы хотите предоставить простой способ вернуться к основному виду деятельности, не нажимая повторно кнопку «Назад», то вы хотите вызвать startActivity после установки флага Intent.FLAG_ACTIVITY_CLEAR_TOP который закроет все действия В стеке вызовов, которые превышают ваш основной вид деятельности и доводят ваше основное действие до вершины стека вызовов. См. Ниже (если ваш основной подкласс активности называется MainActivity:

 btnReturn1.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { Intent i=new Intent(this, MainActivity.class); i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity(i); } )}; 

использование

 Intent returnBtn = new Intent(getApplicationContext(), MainActivity.class); startActivity(returnBtn); 

Сделать основной launchmode для singleTask в Android Manifest, если вы не хотите создавать новый каждый раз.

 android:launchMode="singleTask" 

Я использую его и отлично работал …

 startActivity(new Intent(getApplicationContext(),MainActivity.class).setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)); 

Потому что Finish () используется для двух видов деятельности, а не для нескольких видов деятельности

Вместо запуска MainActivity снова через startActivity, call finish () вместо этого в других действиях, чтобы вернуться к MainActivity … поскольку MainActivity уже находится в стеке

Я настоятельно рекомендую прочитать документы на флаге Intent.FLAG_ACTIVITY_CLEAR_TOP . Использование его не обязательно будет полностью возвращаться к первому ( main ) действию. Флаг будет удалять все существующие действия до класса активности, указанного в Intent . Это хорошо объясняется в документах:

 For example, consider a task consisting of the activities: A, B, C, D. If D calls startActivity() with an Intent that resolves to the component of activity B, then C and D will be finished and B receive the given Intent, resulting in the stack now being: A, B. 

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

Источник

Обычно это работает 🙂

 navigateUpTo(new Intent(getBaseContext(), MainActivity.class)); 

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

  Intent i=new Intent("this","YourClassName.Class"); i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity(i);