android-activity android標題列自訂 - 如何關閉活動並返回到android中的上一個活動




android更改標題 studio標題顏色 (13)

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

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

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

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

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

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

EDITED

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

好的,我一直在尋找,

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

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

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

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


Answers

我相信您的第二項活動可能與您作為兒童活動的主要活動無關。 檢查您的AndroidManifest.xml文件,並查看您的子活動的<activity>條目是否包含android:parentActivityName屬性。 它應該看起來像這樣:

<?xml ...?>
...
<activity
    android:name=".MainActivity"
    ...>
</activity>
<activity
    android:name=".ChildActivity"
    android:parentActivityName=".MainActivity"
    ...>
</activity>
...

{ getApplicationContext.finish();   }

試試這個方法..


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

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

        return super.onOptionsItemSelected(item);
    }

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


完成關閉整個應用程序,這是我在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.


您只需在您所在的活動中調用finish()即可回到之前的活動。 請注意finish()調用之後的任何代碼都會運行 - 您可以在調用finish()來修復此問題後執行返回。

如果您想要將結果返回到活動狀態,那麼在啟動活動狀態2時需要:

startActivityForResults(myIntent, MY_REQUEST_CODE);

在被調用的活動內部,您可以從onCreate()參數獲取Intent或使用Intent

getIntent();

要設置返回結果到活動一,然後在活動二做

setResult(Activity.RESULT_OK, MyIntentToReturn);

如果你沒有意圖回報,那麼就說

setResult(Activity.RESULT_OK);

如果活動的結果不好,可以使用Activity.RESULT_CANCELED(默認情況下使用)。 然後在活動中你做

onActivityResult(int requestCode, int resultCode, Intent data) {
    // Handle the logic for the requestCode, resultCode and data returned...
}

要完成活動,使用與上面描述的finish()相同的方法,並設置結果。


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();
    }
});

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

super.onBackPressed();

這關閉了整個應用程序:

this.finish();

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

getActivity().onBackPressed();

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

finish();

你太難了。 如果我明白你想要做的事情,內置的“後退”按鈕和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


可能你正在調用finish(); 在點擊按鈕事件中,主活動在你點擊按鈕後關閉,當你從下一個活動返回時,應用程序退出,因為主活動已經關閉,並且沒有活動活動。


補充@ Nishant的答案,返回活動結果的最佳方式是:

Intent returnIntent = getIntent();
returnIntent.putExtra("result",result);
setResult(RESULT_OK,returnIntent);
finish();

我遇到了問題

new Intent();

然後我發現正確的方法正在使用

getIntent();

以獲得目前的意圖





android android-activity