2016-10-01 16 views
0

は私onBackPressedが再起動した後は動作しません:アンドロイドmoveTaskToBack()私はここに私の主な活動

@Override 
public void onBackPressed() { 
    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
    if (drawer.isDrawerOpen(GravityCompat.START)) { 
     drawer.closeDrawer(GravityCompat.START); 
    } else { 
     moveTaskToBack(false); 
    } 
} 

そして、これは私が私の主な活動に再起動する方法です:

public void restart() { 
    Intent i = getBaseContext().getPackageManager().getLaunchIntentForPackage(getBaseContext().getPackageName()); 
    i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
    i.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP); 
    startActivity(i); 
} 

moveTaskToBackをは、再起動する前に正常に動作します。 しかし、再起動後は機能しなくなりました。 どうすればよいですか?

+0

アクティビティの完全なコードを入力してください –

答えて

0

あなたはDrawerMainActivity.javaからのフラグメントを開いている場合、このリンクヘルプあなたはHandle Back Pressed

0

私は解決策を見つけました。 1つの方法で置換することですmoveTaskToBack(false);moveTaskToBack(true);。 しかし、実際には問題は解決しません。 本当の解決策はfinish()を追加することです。新しいアクティビティがルートアクティビティになるように別のアクティビティを再起動した後。 コードは次のとおりです。

public void restart() { 
Intent i = getBaseContext().getPackageManager().getLaunchIntentForPackage(getBaseContext().getPackageName()); 
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
i.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP); 
startActivity(i); 
finish(); 
} 
関連する問題