我有两个活动:MainActivity和OtherActivity。 MainActivity中的一个片段会启动OtherActivity,但是当我按顶部的后退按钮时,它将使我返回MainActivity,而不是启动了OtherActivity的片段。

最终结果是将最终用户发送回主屏幕,而不是他们使用的片段。

这是我的清单。我将MainActivity设置为OtherActivity的父级:

    <activity android:name=".MainActivity">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity android:name=".OtherActivity"
        android:parentActivityName="com.example.test.MainActivity" >
    </activity>


在MainActivity中,当用户单击按钮时,它将加载List片段:

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    // ...

    button.findViewById(R.id.events).setOnClickListener(new View.OnClickListener() {

         Fragment ef = new MyItemsFragment();
         FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
         fragmentTransaction.addToBackStack(null);
         fragmentTransaction.replace(R.id.content, ef, "my_fragment");
         fragmentTransaction.commit();
     });

}

public void callOtherActivity() {
    Intent i = new Intent(this, OtherActivity.class);
    this.startActivity(i);
}


在列表片段中单击一个项目时,它将启动OtherActivity。许多代码是由android studio自动生成的。我已经改变了一些。在MyItemsRecyclerViewAdapter中:

@Override
public void onBindViewHolder(final ViewHolder holder, int position) {
    holder.mItem = mValues.get(position);

    holder.mView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if (null != mListener) {
                // Notify the active callbacks interface (the activity, if the
                // fragment is attached to one) that an item has been selected.
                mListener.onEventFragmentInteraction(holder.mItem);

                MainActivity ma = (MainActivity) holder.mView.getContext();
                ma.callOtherActivity();

            }
        }
    });
}


注意,它调用了ma.callOtherActivity(),它在MainActivity中定义,并且在列表片段中单击某个项目时将启动OtherActivity。

这是OtherActivity:

public class OtherActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_other);
    }

}




现在,当我单击OtherActivity中的后退箭头按钮时,该应用程序将仅显示MainActivity,而不显示用户最后一次看到的List片段。

我如何确保从OtherActivity返回时,用户将再次看到列表片段,从而获得更好的用户体验?

编辑:似乎对“后退”按钮感到困惑。也许它们是相同的,但是我在切换活动时是在谈论一个。它不是用于退出应用程序的后退按钮。 See image

最佳答案

只需删除此行fragmentTransaction.addToBackStack(null);

10-05 23:40