2016-11-11 2 views
1

Я пытаюсь закрыть активность предпочтений после того, как я нажму кнопку «Назад». Но когда я нажму, нажмите кнопку «Многозадачная». Я вижу два действия, открытые для моего приложения, которое я сейчас нахожу и preferenceActvivty которой я был на прежде, чем я оттесненыКак закрыть PereferenceActivity

это мой код

public class List extends PreferenceActivity { 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    getFragmentManager().beginTransaction().replace(android.R.id.content, new SetFrag()).commit(); 
} 

public static class SetFrag extends PreferenceFragment { 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     addPreferencesFromResource(R.xml.settings_main); 
    } 
} 
@Override 
public void onBackPressed() { 
    super.onBackPressed(); 
    List.this.finish(); 
} 

Спасибо за помощь.

ответ

1

У меня есть решение. Обычно нам нужно закодировать до того, как будет вызван вызов super.onBackPressed().

Так изменить свой код в эту

public class List extends PreferenceActivity { 
// do some stuff 
@Override 
public void onBackPressed() { 
List.this.finish(); 
} 

Edit:

Так вот мой окончательный ответ вставить эту пользовательскую выездную деятельность в пакете

public class ExitActivity extends Activity 
{ 
@SuppressLint("NewApi") 
@Override protected void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 

    if(android.os.Build.VERSION.SDK_INT >= 21) 
    { 
     finishAndRemoveTask(); 
    } 
    else 
    { 
     finish(); 
    } 
} 

public static void exitApplication(Context context) 
{ 
    Intent intent = new Intent(context, ExitActivity.class); 
    intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NO_ANIMATION | Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS); 
    context.startActivity(intent); 
} 
} 

добавить в очевидном

 <activity 
     android:name=".ExitActivity" 
     android:autoRemoveFromRecents="true" 
     android:theme="@android:style/Theme.NoDisplay" /> 

И называть его

@Override 
public void onBackPressed() { 
ExitActivity.exitApplication(getApplicationContext()); 
} 

Успехов

+0

все еще не работает, пожалуйста, проверьте –

+0

отредактированный ответ и скажите мне рассмотреть, если до сих пор не работает, чем сказать мне –

+0

я не могу видеть, как он будет делать difference..no это не работает .. я добавил еще один фрагмент кода, который мог бы помочь –

0

Проблема решена !!

Шаг 1: В MainActivity добавьте флаг «FLAG_ACTIVITY_NO_HISTORY» в намерение, затем запустите параметр «Настройки».

Шаг 2: переопределите метод привязки onBuildStartFragmentIntent() для параметра SettingsActivity (PreferenceActivity) для добавления флага FLAG_ACTIVITY_FORWARD_RESULT, чтобы actionresult мог вернуться в MainActivity.

Как показано ниже: @Override

public Intent onBuildStartFragmentIntent (String fragmentName, 
             Bundle args, 
             int titleRes, 
             int shortTitleRes) 
    { 
     Intent intent = new Intent(Intent.ACTION_MAIN); 
     intent.setClass(this, getClass()); 
     intent.putExtra(EXTRA_SHOW_FRAGMENT, fragmentName); 
     intent.putExtra(EXTRA_SHOW_FRAGMENT_ARGUMENTS, args); 
     intent.putExtra(EXTRA_SHOW_FRAGMENT_TITLE, titleRes); 
     intent.putExtra(EXTRA_SHOW_FRAGMENT_SHORT_TITLE, shortTitleRes); 
     intent.putExtra(EXTRA_NO_HEADERS, true); 
     intent.addFlags(Intent.FLAG_ACTIVITY_FORWARD_RESULT);//the new statement 
     return intent; 
    } 
Смежные вопросы