2016-11-11 102 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; 
    }