簡體   English   中英

后退導航不會還原最后一個片段

[英]Back Navigation does not restore the last fragment

我對back navigation有問題,因為它不能還原最后一個片段。 所有活動都是使用Android Studio的navigation_drawer( ActivityA )和scroll_activity( ActivityB )模板進行的AppCompatActivity

  • ActivityA顯示fragment_1 (確定)
  • fragment_1替換為fragment_2 (確定)
  • 通過單擊fragment_2的按鈕來啟動ActivityB (確定)
    • 如果單擊系統的“后退”按鈕,則可以看到ActivityBGOOD
    • 如果我單擊ActivityBback導航,則它將顯示fragment_1而不是fragment_2 (不好)

我嘗試過的是:

  1. 創建一個靜態變量來控制顯示哪個片段,然后嘗試在onResume()再次呈現,但是它不起作用。
  2. 點擊此鏈接,但也無法正常工作。

有什么幫助嗎? 謝謝

嗨,阮(Nguyen),我創建了相同的場景,但是從activityB返回后,在fragment_2的頂部

我的代碼`公共類FirstActivity擴展了ActionBarActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_first);
    if (savedInstanceState == null) {
        getSupportFragmentManager().beginTransaction().add(R.id.container, new PlaceholderFragment1()).commit();
    }
}

/**
 * A placeholder fragment containing a simple view.
 */
public static class PlaceholderFragment1 extends Fragment {

    public PlaceholderFragment1() {
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View rootView = inflater.inflate(R.layout.fragment_first, container, false);
        Button button = (Button) rootView.findViewById(R.id.btn);
        button.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                getActivity().getSupportFragmentManager().beginTransaction().add(R.id.container, new PlaceholderFragment2()).commit();
            }
        });
        return rootView;
    }
}

public static class PlaceholderFragment2 extends Fragment {

    public PlaceholderFragment2() {
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View rootView = inflater.inflate(R.layout.fragment_second, container, false);
        Button button = (Button) rootView.findViewById(R.id.btn);
        button.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                Intent intent = new Intent(getActivity(), Secondctivity.class);
                startActivity(intent);
            }
        });
        return rootView;
    }
}

}`

這是我的清單文件

<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <activity
        android:name=".FirstActivity"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

    <activity
        android:name=".Secondctivity"
        android:label="@string/title_activity_secondctivity" >
    </activity>
</application>

我忘記了一個簡單的解決方案是“ 活動啟動模式” 我修改了清單文件中的活動,這樣一切正常。

 <activity
            android:name=".ActivityA"
            android:launchMode="singleTask"
            android:label="@string/app_name"
            android:theme="@style/AppTheme.NoActionBar">

問題是back navigation按鈕試圖再次創建ActivityA (可能是由於滾動活動模板行為)。

暫無
暫無

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

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