如何从片段中启动活动?

时间:2016-08-12 09:52:47

标签: android android-layout android-fragments android-intent android-activity

当我按下最后一个按钮时,我想从Activity开始Fragment,但我得到的是空白布局,而不是与{{1}相关联的布局}。

我从Activity拨打Fragment,如下所示:

MainActivity.class

FragmentManager mFragmentManager = getSupportFragmentManager(); FragmentTransaction fragmentTransaction = mFragmentManager.beginTransaction(); fragmentTransaction.replace(R.id.mainContent,new FragmentMain()).commit(); 课程中,我有一个FragmentMain方法,如下所示:

onClick

但结果是空白布局,并且logcat上没有显示错误。我在网上搜索了类似的行为,我找到了一些无法解决问题的解决方案:

我的项目中没有任何方法@Override public void onClick(View v) { Intent intent = new Intent(getActivity(), FinalClass.class); getActivity().startActivity(intent); } ,所以这个解决方案对我不起作用。

addToBackStack()是接受的答案。

他们用来从片段中启动活动的方式不会改变我使用的方式。

提供的任何解决方案都适用于我。

P.S:我在getActivity().startActivity(myIntent)文件中声明了Activity

Manifest.xml

P.S.2:不要怀疑是否需要更多代码(我试图简化它以专注于问题)。

我可以做些什么来避免<activity android:name=".FinalClass" android:screenOrientation="portrait" android:label="Final Class" android:icon="@mipmap/ic_launcher" android:theme="@style/AppTheme.NoActionBar" /> 给我一个空白的布局而不是与Activity相关联的布局?

提前致谢!

4 个答案:

答案 0 :(得分:1)

onCreate

中将您的布局设置为此类活动
@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_final_class);
}

不要将onCreateView用于活动

答案 1 :(得分:1)

您无法使用片段实例从Fragment启动活动。但您可以使用片段容器活动实例启动活动。 例如:假设活动A 具有 Fragment Abc ,因此您必须使用Activity A而不是Fragment abc的实例。

通过这样做,您之前的片段中会有无效,因为它位于您的Activity的顶部,而不是替换或添加现有的片段。如果您想在现有片段中进行一些更改,则必须覆盖 onActivityResult

@Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
    } 

:) GlbMP

答案 2 :(得分:0)

你可以使用onCreateView方法然后使用这个代码它也会有帮助......

 <div id="container_video">
     <video id="video1" width="450" height="340" preload="auto"></video>
     <canvas id="overlay" width="450" height="340"></canvas>
     <canvas id="webgl" width="450" height="340"></canvas>
 </div>

答案 3 :(得分:0)

最后,我找到了解决方案。我使用了错误的onCreate方法。

之前,我有:

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
       final View inflaterFinalClass = inflater.inflate(R.layout.activity_final_class, null); 
       return inflaterFinalClass;

但我应该使用:

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_final_class);
}

因此,总而言之,我使用onCreate方法处理Fragment而不是onCreate方法用于Activity。