【发布时间】:2016-12-19 07:04:06
【问题描述】:
当我按下最后一个按钮时,我想从Fragment 开始一个Activity,但我得到的是空白布局,而不是与Activity 关联的布局。
我像这样从MainActivity.class 调用Fragment:
FragmentManager mFragmentManager = getSupportFragmentManager();
FragmentTransaction fragmentTransaction = mFragmentManager.beginTransaction();
fragmentTransaction.replace(R.id.mainContent,new FragmentMain()).commit();
在FragmentMain 类上,我有一个onClick 方法,如下所示:
@Override
public void onClick(View v) {
Intent intent = new Intent(getActivity(), FinalClass.class);
getActivity().startActivity(intent);
}
但结果是空白布局,logcat 上没有显示任何错误。我在网上搜索了类似的行为,但发现了一些无法解决我的问题的解决方案:
我的项目中没有任何方法addToBackStack(),所以这个解决方案对我不起作用。
getActivity().startActivity(myIntent) 是公认的答案。
他们用于从 Fragment 启动 Activity 的方式与我使用的方式没有改变。
提供的任何解决方案都对我有用。
P.S:我已经在Manifest.xml文件中声明了Activity:
<activity
android:name=".FinalClass"
android:screenOrientation="portrait"
android:label="Final Class"
android:icon="@mipmap/ic_launcher"
android:theme="@style/AppTheme.NoActionBar" />
P.S.2:不要怀疑是否需要更多代码(我试图简化它以专注于问题)。
我能做些什么来避免Activity 给我一个空白布局而不是与Activity 关联的布局?
提前致谢!
【问题讨论】:
-
FInalClassactivity 的布局中是否有视图? -
只是一个旁注,不确定从片段中执行“getActivity().startActivity()”是否是一个好习惯。我建议使用您的活动将实现的接口,然后从您的片段中调用接口上的方法。然后从你的活动开始你的活动。不要认为这与您的问题有关..
-
@BurhanuddinRashid 我有以下内容:
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { final View inflaterFinalClass = inflater.inflate(R.layout.activity_final_class, null); return inflaterFinalClass; -
FinalClassis Fragment?..show layout code foractivity_final_class -
@Error404 您的活动实现了您的界面,因此通过在您的界面上调用一个方法,您实际上是在调用您的活动中的一个方法,这将反过来启动另一个活动。因此从活动开始活动。我认为这样更干净,活动更改处于顶层,更易于维护代码。此外,片段实际上是活动的子项并存在于活动中,因此通过从片段开始一个活动,它就像一个孩子订购父母:)
标签: android android-layout android-fragments android-intent android-activity