Android Studio 1.1.2
你好,
我有MainActivity,TitlesFragment和DelessFragment。
我的MainActivity将显示TitlesFragment,当用户单击标题时,TitlesFragment将被DetailsFragment替换。那很好。然而,当我将DetailsFragment添加到addToBackStack时。当我点击后退按钮时,它会关闭应用程序,而不是显示标题碎片。
我在想我需要2个活动来完成这个。一个用于瓷砖碎片,另一个用于细节碎片?目前我正在尝试用一个活动来做这件事?
当前,这是我的 MainActivity 代码片段(仅显示片段事务)
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.d(TAG, "onCreate");
setContentView(R.layout.activity_main);
/* Load ListFragment */
FragmentManager fragmentManager = getFragmentManager();
Fragment fragment = fragmentManager.findFragmentById(R.id.fragment_container);
/* If the fragment is null then we need to load this fragment */
if(fragment == null) {
fragment = TitlesFragment.newInstance(1234);
FragmentTransaction fragmentTransaction = getFragmentManager().beginTransaction();
fragmentTransaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
fragmentTransaction.add(R.id.fragment_container, fragment, "TitlesFragment");
fragmentTransaction.commit();
}
}
@Override
public void onColorPlateSelected(long plateID) {
Log.d(TAG, "onColorPlateSelected: " + plateID);
/* Get the plate ID and pass it to the details fragment */
FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
/* Replace the fragment with the new color plate */
fragmentTransaction.replace(R.id.fragment_container, DetailsFragment.newInstance(plateID), "DetailsFragment");
fragmentTransaction.addToBackStack(null);
fragmentTransaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
fragmentTransaction.commit();
}
我的activity_main布局:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<FrameLayout
android:id="@+id/fragment_container"
android:layout_width="match_parent"
android:layout_height="match_parent">
</FrameLayout>
这里ActivityMain将替换framelayout中的片段。
我通过处理OnBackPressed事件处理程序看到了这一点。但是我想知道没有它我能不能做到?
非常感谢任何建议,
我已经设法解决了这个问题。我的主要活动标志是这样的:
public class MainActivity extends ActionBarActivity {
..
}
我正在扩展 MainActivity 以从 ActionBarActivity 继承。但是,当我将类签名更改为以下内容时:
public class MainActivity extends Activity {
..
}
一切都按预期进行,我可以使用backButton从detailsFragment导航到TitlesFragmet。
不确定为什么会这样,也许在使用片段时,操作栏最好在片段本身中实现,而不是在主活动中实现。
希望这可以帮助别人
尝试将相同的 addToBackStack() 方法添加到添加到活动的第一个列表片段中。即
fragment = TitlesFragment.newInstance(1234);
FragmentTransaction fragmentTransaction = getFragmentManager().beginTransaction();
fragmentTransaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
fragmentTransaction.add(R.id.fragment_container, fragment, "TitlesFragment");
fragmentTransaction.addToBackStack(null);
fragmentTransaction.commit();
然后,这应该可以防止第二个片段在后退堆栈中替换它。
我想在Android的一个活动中添加两个片段。但在加法时,它给出了错误; activity_main.xml 片段的布局1 片段2的布局
我对Android应用程序很陌生,所以我希望能在这里找到一些帮助。我已经在这里搜索了我的问题并找到了一些东西,但这不起作用。 我想向FrameLayout添加一个片段,但它不起作用。我的目标是创建一个框架(/框架?)这总是存在的,用户可以与它交互,在这个框架内的一个特定的“窗口”中,我想显示页面/片段,总共五个,并且能够随时切换页面/片段,所以我有一个始终存在的框架,在这个动态变化的页面内。但现在
我已经完成了导航,现在进入第一个片段。在第一个片段中有两个按钮,我需要通过按下这些按钮来切换到一个新的活动。我不明白如何正确地实施它。我犯了一个错误。 代码,eror
在我的应用程序中,我使用了一个活动和两个片段。该应用程序使用带有容器的布局,因此片段是通过事务添加的。第一个片段包含列表视图,另一个片段包含列表视图项的详细视图。两个片段都使用setRetainInstance(true)。片段是通过替换事务添加的,并设置了addToBackStack(null)。列表片段包含一个实例变量,其中包含列表的一些信息。现在我正在切换到详细并按回,实例变量为null。我
问题内容: 我在小组活动中有一个片段,我想用另一个片段替换它: 在不使用活动组的情况下作为单独的项目完成时,它工作正常,当控件进入getview()时,每件事在日志猫中都可以正常工作,但是没有视图可见,甚至没有任何异常出现,我希望将书详细信息片段由部分详细信息片段代替。 图书详细信息片段的XML具有id book_description_fragment,而部分描述片段的xml具有id secti
这是我完整的logcat: 在Android.support.v4.app.backStackRecord.doaddop(backStackRecord.java:414)在Android.support.v4.app.backStackRecord.replace(backStackRecord.java:449)在Android.support.v4.app.backStackRecord.