2017-10-17 115 views
1

我已經看到了一堆這樣的帖子,但沒有解決方案爲我工作。我有一個應用程序,首先加載的是LoginActivity,它會檢查您是否已經登錄,是否將它發送給MainActivity,MainActivity是應用程序的主要內容。我的問題是,當你在MainActivity上並且你點擊硬件後退按鈕時,它只是重新加載MainActivity,因爲我假設它試圖返回到LoginActivity。關閉應用程序在Android的硬件後退按鈕

我已經嘗試過在這裏看到的帖子的各種「修復」,但他們都沒有工作。目前在我的MainActivity AndroidManifest.xml文件我已經添加了

機器人:noHistory =「真」

要在MainActivity意圖,但沒有做出多大的差別。我看到另一篇文章,其中有人提到基本上開始一個新的活動與一個特殊的意圖,使系統加載您的主屏幕,但有人指出,如果有人加載你的應用程序,回擊,然後再次做它不斷增加「堆棧「,這可能是非常糟糕的。

所以我希望有人遇到類似的情況,你必須首先加載LoginActivity來驗證用戶,然後啓動Main,但是你需要從MainActivity上按回來按鈕。

感謝您提前給予任何幫助。我很感激。

回答

2

創建一個函數onActivityResultLoginActivity並使用startActivityForResult()

實例調用MainActivity

LoginActivity:

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    startActivityForResult(new Intent(this, MainActivity.class), 1); 
} 

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    if (resultCode == RESULT_OK) { 
     if (data.getBooleanExtra("EXIT", false)) { 
      finish(); 
     } 
    } 
} 

MainActivity關閉整個應用程序使用onBackPressed。不要忘了刪除super.onBackPressed()

MainActivity:

@Override 
public void onBackPressed() { 
    // super.onBackPressed(); 
    Intent intent = new Intent(); 
    intent.putExtra("EXIT", true); 
    setResult(RESULT_OK, intent); 
    finish(); 
} 
0

當我有這樣的問題,我在 「AndroidManifest.xml中」 添加的每個活動是:

android:launchMode="singleTask" 

在你loginActivity:

startActivity(new Intent(this, MainActivity.class)); 
finish(); 

檢查:https://developer.android.com/guide/topics/manifest/activity-element.html

相比之下,「singleTask」和「singleInstance」活動只能開始一項任務。它們始終處於活動堆棧的根部。而且,該設備一次只能保存一個活動實例 - 只有一個這樣的任務。

1

我有一個應用程序,第一個屏幕是一個飛濺的活動(顯示我的標誌),幾秒鐘後它進入MainActivity。在啓動MainActivity後,在您的LoginActivity中關閉您的LoginActivity。 做這樣的事情:

 Intent mainIntent = new Intent(LoginActivity.this,MainActivity.class); 
    LoginActivity.this.startActivity(mainIntent); 
    LoginActivity.this.finish(); 
0

你可以試試我的代碼:

void gotoLogin() { 
    Intent t = new Intent(SplashScreenActivity.this, LoginActivity.class); 
    finish(); 
    startActivity(t); 
} 

void gotoMainActivity() { 
    Intent t = new Intent(SplashScreenActivity.this, MainActivity.class); 
    finish(); 
    startActivity(t); 
} 

您檢查

if (you logged in){ 
    gotoMainActivity(); 
} else { 
    gotoLogin(); 
} 

後,我希望它可以幫助你問題! 謝謝!

相關問題