2016-11-11 33 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(); 
} 

編輯:

所以這是我最後的答案 粘貼到你的包

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它不工作..i增加了另一塊代碼認爲它可能有幫助 –

0

問題解決了!

第1步:在MainActivity中,向Intent添加標誌「FLAG_ACTIVITY_NO_HISTORY」,然後啓動SettingsActivity。

第2步:重寫SettingsActivity(PreferenceActivity)的onBuildStartFragmentIntent()方法以添加標誌FLAG_ACTIVITY_FORWARD_RESULT,以便activityresult可以返回到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; 
    }