我有两个活动: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);