studio標題顏色 - android隱藏actionbar




如何關閉活動並返回到android中的上一個活動 (10)

你太難了。 如果我明白你想要做的事情,內置的“後退”按鈕和Android本身將為你做所有的工作: http://developer.android.com/guide/components/tasks-and-back-stack.html : http://developer.android.com/guide/components/tasks-and-back-stack.html

此外,實施自定義“後退”按鈕違反核心應用程序質量指南UX-N1: http://developer.android.com/distribute/googleplay/quality/core.html : http://developer.android.com/distribute/googleplay/quality/core.html

我有一個主要的活動,當我點擊一個按鈕,開始一個新的活動,我用下面的代碼來做到這一點:

Intent intent = new Intent(this, SettingsActivity.class);
startActivity(intent);

上面的代碼是從主要活動中運行的。

現在在主要活動調用的新活動中,我有一個後退按鈕。 當我點擊這個後退按鈕時,我希望我的新活動關閉,並且它必須回到原來的主要活動。

我已經嘗試調用super.finish()finish() (來自新的活動),但是這會關閉我的整個應用程序(包括我的主要活動)。

如何關閉當前關注的活動,然後返回到主要活動?

EDITED

事實上,我的手機的後退按鈕也關閉了我的整個應用程序,導致我認為我錯誤地啟動了第二個活動?

好的,我一直在尋找,

我創建了一個設置活動,它使用相同的清單代碼和相同的代碼來啟動活動。

對於按下後退按鈕時的設置活動,它將返回到主活動。

通過上面提到的主要問題中的活動,它只是退出我的整個應用程序。

所以這個問題似乎不是用代碼完成活動,而是活動本身。


只要不要在MainActivity上調用finish() ,那麼這就不需要在你的onBackPressed()重寫你的onBackPressed() ,除非你在該函數中做其他事情。 如果你覺得這個後退按鈕的“需要”,那麼你可以簡單地調用SecondActivity上的finish() ,並且只要你沒有調用finish()就可以進入MainActivity


如果你使用片段你應該使用

getActivity().onBackPressed();

如果你使用單獨的活動,你可以使用

finish();

完成關閉整個應用程序,這是我在Android開發中討厭的東西沒有完成,但是他們沒有保持良好的語法他們有語法

startActivity(intent)

為什麼不

closeActivity(intent)?


我不知道這是否是有用的或者不是,但我正在與同樣的問題苦苦掙扎,我發現一個非常簡單的方法,只有一個全局布爾變量和onResume()操作。 在我的情況下,我的Activity C如果在特定的按鈕中被點擊,它應該觸發Activity B的finish()!

Activity_A - > Activity_B - > Activity_C

Activity_A(通常打開Activity_B)

Activity_B(在一些按鈕點擊打開Activity_C):

// Global:
boolean its_detail = false;
// -------
SharedPreferences prefs =  getApplicationContext().getSharedPreferences("sharedpreferences", 0);
boolean v = prefs.getBoolean("select_client", false);

its_detail = v;

startActivity(C);

@Override
public void onResume(){
     super.onResume();
     if(its_detail == true){
        finish();
     }
}

因此,無論何時點擊活動C上的按鈕,它都會執行活動B的“onResume()”功能並返回到活動A.


我想你在啟動SettingsActivity之前在MainActivity中調用finish()方法。

您所描述的場景將通過以下兩種方式發生:

無論是

您在AndroidManifest.xml中為MainActivity設置了android:noHistory = "true" ,這會導致MainActivity在按下後退鍵時自動finish

要么

在切換到“SettingsActivity”之前,您在MainActivity調用了finish() ,這會殺死它。 當您按下返回按鈕時,由於沒有其他活動被預先設置為彈出堆棧,它將返回到主屏幕。


當你點擊你的按鈕時,你可以調用它:

super.onBackPressed();

試試這個代碼而不是finish

onBackPressed();


 @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        int id = item.getItemId();

        if ( id == android.R.id.home ) {
            finish();
            return true;
        }

        return super.onOptionsItemSelected(item);
    }

試試這個工具在後退按鈕上作為硬件後退按鈕


Button edit = (Button) view.findViewById(R.id.yourButton);
edit.setOnClickListener(new OnClickListener() {

    @Override
    public void onClick(View view) {
        Intent intent = new Intent(this, YourMainActivity.class);
        startActivity(intent);
        finish();
    }
});




android-activity