簡體   English   中英

從 Activity 返回片段

[英]Get back to a fragment from an Activity

我在 Activity C 中有三個片段。它們表現為標簽。 我必須從一個片段轉到一個新的 Activity X。現在我想從 Activity X 回到片段。

我覆蓋了 onBackPressed 但不知道如何從活動返回片段/不片段活動。

如果我想回到一個活動到另一個活動,我會在按下后覆蓋並使用意圖調用該活動..

我想做這樣的事情..這個代碼是為了回到以前的活動

@Override
public void onBackPressed()
{

    Intent intent = new Intent(CurrentActivity.this,ActivityYouLikeToGo.class);

    intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);

    startActivity(intent);
}

提前致謝..

首先,覆蓋后按以轉到片段所在的活動:-

@Override
public void onBackPressed()
{

    Intent intent = new Intent(CurrentActivity.this,ActivityYouLikeToGo.class);

    intent.putExtra("Check",1);
    startActivity(intent);
}

然后轉到 ActivityYouLikeToGo.java 文件並在 onCreate 中執行以下操作:-

Intent intent = getIntent();
String s1 = intent.getStringExtra("Check");

if(s1.equals("1"))
  {
s1 = "";
Fragment fragment = new YOURFRAMENTNAME();
if (fragment != null) {
            FragmentManager fragmentManager = getFragmentManager();
            fragmentManager.beginTransaction()
                    .replace(R.id.frame_container, fragment).commit();
  }
}

您可以添加一個 TAG(基本上是片段的字符串名稱),然后使用findFragmentByTag().加載片段findFragmentByTag().

findFragmentByTag() Google 文檔在這里

或者您也可以在從FragmentTransaction調用片段時addToBackStack() ,文檔鏈接here 來自谷歌文檔:

“通過調用 addToBackStack(),替換事務被保存到后退堆棧,因此用戶可以通過按下后退按鈕來反轉事務並帶回前一個片段。”

最簡單的方法:

@Override
onBackPressed(){
finish();
}

當你從一個片段開始一個活動時,這個片段永遠不會被殺死,你可以通過完成()殺死當前活動來簡單地回到你的片段;這就像當你從一個片段打開一個活動並按下后退按鈕時您跳轉到片段而不會丟失數據。

如果我想回到一個活動到另一個活動,我會在按下后覆蓋並使用意圖調用該活動

通常情況下,如果你想回去,你不必做任何事情。 按下設備的硬件后退按鈕將帶您到上一個活動,並且相應的選項卡已經打開。

您可以使用 startActivityForResult() 啟動您要導航到的活動,然后在返回上一個活動時設置結果。在您要返回的活動中,根據結果代碼顯示片段。 您可以通過隱藏所有不想顯示的片段來完成此任務。 即使您要從另一個片段轉到另一個活動,這也可以工作。

在您從片段開始的活動中,您可以執行以下操作:

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        //do whatever you want here
        finish();
        return true;
    }

這對我行得通 :)

這段代碼適用於我的情況。 我只是對按鈕做了一個 Onclick 方法。 代碼如下:我在Button中創建了onclick方法clickForFriends,Id是backFriendsList,我使用android.support.v4.app.Fragment類。 此方法應從新的 Activity 取回 Activity 啟動時的片段,並且此方法應在 onCreate 方法之后的 Activity 中

 public void clickedForFriends(View v){
    if (v.getId() == R.id.backFriendsList){
       onBackPressed();
    }
}

在此處輸入圖片說明

@Override
public void onBackPressed() {
  //Here "digiM" is an Actionbar Title
    if(getTitle().equals("digiM") || getSupportActionBar().getTitle().equals("digiM"))
    {
        //reload the activity if you want to open it again as your need
        Intent intent = new Intent(Your_Current_Activity.this,Your_Current_Activity.class);
        startActivity(intent);
    }
}

如果您在該片段中有操作欄,那么您可以在 Activity 中檢查onBackPressed()上的操作欄標題,其中包含類似的方法。

你可以在activity.xml中添加:

<androidx.appcompat.widget.Toolbar
        android:id="@+id/tool_bar"
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize"
        android:background="@color/white"
        app:navigationIcon="?attr/homeAsUpIndicator" />

然后在 activity.kt 中:

 override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        binding = ActivityBinding.inflate(layoutInflater)
        setContentView(binding!!.root)

        binding!!.toolBar.setNavigationOnClickListener{
            onBackPressed()
        }
}

並在覆蓋函數中執行以下操作:

override fun onBackPressed() {
        super.onBackPressed()
        finish()
    }

這將使您回到片段的先前狀態

viewPager.setCurrentItem(tabPosition);

這個解決方案為我創造了奇跡。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM