2016-01-06 3 views
-1

Это дает мне трудное время, независимо от того, что я делаю, нажав кнопку возврата, верните приложение для входа в систему.Невозможно остановить мое приложение от возврата к активности входа, независимо от того, что я делаю

Это методы, я пытался до сих пор:

1: Я пытался установить флаги намерений, чтобы очистить сверху, стереть историю, а также исключить деятельность из списка недавних.

Intent intent = new Intent(MainActivity.this, NoticeAndStuff.class); 
intent.addFlags(intent.FLAG_ACTIVITY_NO_HISTORY | intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS | intent.FLAG_ACTIVITY_CLEAR_TOP); 
startActivity(intent); 

2: Я также попытался использовать finish() после вызова startActivity().

Intent intent = new Intent(MainActivity.this, NoticeAndStuff.class); 
startActivity(intent); 
finish(); 

Излишне говорить, что я также попытался их обоих в то же время слишком, а также попытался установить noHistory флаг в файле манифеста просто чтобы быть уверенным. Я также попытался переопределить кнопку «Назад», но кнопка «Назад» вернется к активности входа в систему.

Это мой файл манифеста:

<?xml version="1.0" encoding="utf-8"?> 

<uses-permission android:name="android.permission.INTERNET" /> 

<application 
    android:name=".app.AppController" 
    android:allowBackup="true" 
    android:icon="@mipmap/ic_launcher" 
    android:label="@string/app_name" 
    android:supportsRtl="true" 
    android:theme="@style/AppTheme" > 
    <activity 
     android:name=".SplashScreen" 
     android:label="@string/app_name" 
     android:noHistory="true" 
     android:theme="@style/AppTheme.NoActionBar" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
    <activity 
     android:name=".MainActivity" 
     android:noHistory="true" 
     android:label="@string/title_activity_main" 
     android:theme="@style/AppTheme.NoActionBar" > 
    </activity> 
    <activity 
     android:name=".NoticeAndStuff" 
     android:label="@string/title_activity_notice_and_stuff" 
     android:theme="@style/AppTheme.NoActionBar" > 
    </activity> 
    <activity 
     android:name=".Subscriptions" 
     android:label="@string/title_activity_subscriptions" 
     android:theme="@style/AppTheme.NoActionBar" > 
    </activity> 
    <activity 
     android:name=".Details" 
     android:label="@string/title_activity_details" 
     android:theme="@style/AppTheme.NoActionBar" > 
    </activity> 
    <activity 
     android:name=".Abouts" 
     android:label="@string/title_activity_abouts" 
     android:theme="@style/AppTheme.NoActionBar" > 
    </activity> 
    <activity 
     android:name=".FeedBack" 
     android:label="@string/title_activity_feed_back" 
     android:theme="@style/AppTheme.NoActionBar" > 
    </activity> 
</application> 

+0

Вы пробовали, setActivityForResult? также является элементом NoticeAndStuff, к которому вы хотите перейти? –

+0

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

+1

use finish() before startActivity (намерение) – Anil

ответ

2

В худшем случае попробуйте

ActivityCompat.finishAffinity(); 

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

Счастливое кодирование.

0

Попробуйте добавить android:noHistory="true", где ваш Логин деятельность объявленную в manifest.xml

Если это не работает, попробуйте

Intent i=new Intent(MainActivity.this, NoticeAndStuff.class); 
i.setFlags(android.content.Intent.FLAG_ACTIVITY_CLEAR_TOP); 
finish(); 
startActivity(i); 
+0

уже сделано. Не помогло мне – D3athh

+0

Затем поделитесь своим кодом активности Splash –

1

Попробуйте это.

Intent intent =new Intent(CurrentActivity.this,NextActivity.class); 
intent.setFlags(android.content.Intent.FLAG_ACTIVITY_CLEAR_TOP); 
startActivity(intent); 
finish(); 
+0

Пробовал, что не работал. – D3athh

+0

Вы называете эту деятельность где-то еще? Пожалуйста, напишите весь код – Anonymous

+0

Я не. Я не думаю, что публикация всего кода решит это. Его путь к большому и моему вопросу содержания выглядит громоздким. – D3athh

1

Я предполагаю, что ваш манифест должен иметь такие детали, как его

<activity 
       android:name=".MainActivity" 
       android:screenOrientation="portrait" 
       android:theme="@style/AppTheme.SplashScreen"> 
       <intent-filter> 
        <action android:name="android.intent.action.MAIN" /> 

        <category android:name="android.intent.category.LAUNCHER" /> 
       </intent-filter> 
      </activity> 
<activity 
      android:name=".NoticeAndStuff" 
      android:label="@string/title_activity_name" 
      android:theme="@style/AppTheme.NoActionBar" /> 

И MainActivity должен быть класс, расширяющий класс Activity или AppCompatActivity
и навигация к следующему экрану будет

void moveToNextScreen(){ 
     startActivity(new Intent(getApplicationContext(), NoticeAndStuff.class)); 
     this.finish(); 
    } 

Если после этого убедитесь, что ваши файлы сборки очищены и перестроены каждый время, когда вы делаете изменение кода. В студии Android это будет «Путь к диску \ AppName \ app \ build». Вы можете вручную удалить и снова попробовать очистить сборку. Кроме того, ошибок не должно быть.

Edit: Если все это не работает, а затем положить это на BackButton прессе

finishAffinity(); 

Проверить это для Deails: API Details

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

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

+0

Попробуйте это, и если это еще не осуществимо, сообщите мне, я могу дать еще одно решение. – Stallion

+0

MainActivity - это не активность запуска, поэтому я боюсь, что запуск в манифесте не выполним. Я действительно пытался это сделать, но это не сработало. – D3athh

+0

Я только что дал образец и может быть другим в соответствии с нашей реализацией. Таким образом, ваш заставку также следует удалить, вызвав финиш? Аналогично в случае с NoteAndStuff. Попробуйте новый Intent (getApplicationContext(), NoticeAndStuff.class), прежде чем это очистите и перестройте, как я уже упоминал. – Stallion

1
Try this 
    Intent ii2 = new Intent(getApplicationContext(), FacebookSharing.class); 
       ii2.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
       startActivity(ii2); 
       finish(); 
+0

Пробовал, что. Проблема все еще выходит. – D3athh

1

Я думаю, что все, что хорошо, просто попробуйте это, которое вы уже сделали.

Intent intent = new Intent(MainActivity.this, NoticeAndStuff.class); 
startActivity(intent); 
finish(); 

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

+0

Пробовал делать все, что вы сказали, Тем не менее проблема существует. – D3athh

1

Немного сложно, попробуйте это.

Использование FLAG_ACTIVITY_NEW_TASK и FLAG_ACTIVITY_CLEAR_TASK будет делать то трюк

Intent next = new Intent(CurrentActivity.this, LoginActivity.class); 
     // will close all the running activiities and goes to Login Activity 
next.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK 
       | Intent.FLAG_ACTIVITY_CLEAR_TASK); 
startActivity(next); 
finish(); 

Днем Coding .. !!