gpt4 book ai didi

android - 使用 fragment 处理 setDisplayHomeAsUpEnabled

转载 作者:太空狗 更新时间:2023-10-29 14:27:51 25 4
gpt4 key购买 nike

我有一个基于 fragment 的布局,其中包含两个 ListFragment(A 和 B),它们都包含在一个 Activity (称为 ListingActivity 1)中。当应用程序启动时,将调用 ListingActivity 1,并根据设备是纵向还是横向,仅显示 ListFragment A 或同时显示 ListFragment。

当您点击 Fragment A 的 ListView 中的项目时,Fragment B 的 ListView 随即显示。当您单击 Fragment B 的 ListView 中的项目时,它会转到新 Activity ( Activity 1)。

我正在使用此代码(称为 ListingActivity 2)来确定是单独显示 ListFragment B 还是与 ListFragment A 一起显示:

public class ListingActivity extends SherlockFragmentActivity  
{
@Override
protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) {
// If the screen is now in landscape mode, we can show the
// dialog in-line so we don't need this activity.
finish();
return;
}

if (savedInstanceState == null) {
// During initial setup, plug in the details fragment.
final ListingFragment details = new ListingFragment();
details.setArguments(getIntent().getExtras());

getSupportFragmentManager().beginTransaction().add(android.R.id.content, details).commit();
}
}
}

在 Activity 1 中,我使用 setDisplayHomeAsUpEnabled 将 Actionbar Logo 启用为后退按钮,但我不确定如何处理主页 Intent 。当设备处于纵向模式时,用户应返回到 ListingActivity 2,但如果设备处于横向模式,则应返回到 ListingActivity 1。

我本来打算做这样的事情,但它看起来真的很老套:

@Override
public boolean onOptionsItemSelected(final MenuItem item)
{
if (item.getItemId() == android.R.id.home)
{
final Intent intent;

if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE)
intent = new Intent(this, ListingActivity1.class);
else
intent = new Intent(this, ListingActivity2.class);

intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
return true;
} else {
return super.onOptionsItemSelected(item);
}
}

最佳答案

老实说,我认为您的解决方案是实现所描述行为的正确方法。它遵守所有关于向上导航的 Android 标准(在这种情况下,它应该像“后退”按钮一样,我相信)。我唯一要重新考虑的是您对 Intent.FLAG_ACTIVITY_NEW_TASK 标志的使用。来自 Android 文档:

A task is the sequence of activities a user follows to accomplish a goal.

在这种情况下,您似乎并没有开始一项新任务。

关于android - 使用 fragment 处理 setDisplayHomeAsUpEnabled,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10264838/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com