我有两个活动:主活动和其他活动。在MainActivity片段启动OtherActivity,但是当我按后退按钮,在顶部,它返回我的MainActivity取而代之的是推出了OtherActivity的片段。从另一个活动返回后返回到MainActivity的片段?
最终结果是最终用户被发送回主屏幕而不是他们正在使用的片段。
这是我的清单。我已经设置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,当用户点击一个按钮,它加载列表片段:
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);
}
当项目在List Fragment中单击,它启动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();
}
}
});
}
通知它调用,这是在MainActivity定义,将推出OtherActivity当点击列表中的片段的项目。
这是OtherActivity:
public class OtherActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_other);
}
}
现在,当我点击在OtherActivity后退箭头按钮,该应用程序将只显示MainActivity,而不是名单片段用户上次看到。
如何确保从OtherActivity返回时,用户将再次看到列表片段以获得更好的用户体验?
编辑:似乎有关于'后退'按钮的混淆。也许他们是一样的,但我在谈论切换活动时的那个。它不是用于退出应用程序的后退按钮。 See image
尝试在调用片段时删除addToBackStack(null),并参见 –
从清单文件中删除android:parentActivityName =“com.example.test.MainActivity”并尝试。无论您何时单击后退按钮,它都会基本启动MainActivity新鲜activity.Please让我知道如果我是错的。 –
只有一个“后退”按钮,通常用于导航后退堆栈。我认为你的更新是说你指的是“向上”按钮。 https://developer.android.com/training/appbar/up-action。html – Kuffs