2016-11-11 8 views
1

私はバックボタンをクリックした後、プリファレンスアクティビティを閉じようとしています。しかし、それを押してからマルチタスクボタンをクリックします。私は現在、そして私は、これは私のコードの助けを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(); 
} 

おかげでバック

押す前に、私が上だったpreferenceActvivty。

答えて

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を行いますどのように見ることができませんそれは、コードの別の部分を追加してwork..iていないことは、それが役立つかもしれないと思った私は、この時間はあなただけautoRemoveFromRecentsは私のリストをイム追加他の賢明な幸運仲間:)あなたtime..iため –

0

問題解決!

ステップ1:MainActivityで、フラグ "FLAG_ACTIVITY_NO_HISTORY"をインテントに追加し、次にSettingsActivityを開始します。

ステップ2:activityresultはMainActivityに戻ることができるように、フラグFLAG_ACTIVITY_FORWARD_RESULTを追加するためSettingsActivity(PreferenceActivity)のonBuildStartFragmentIntent()メソッドをオーバーライド。

以下のように: @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; 
    } 
関連する問題