首页 > 解决方案 > 无法从主要活动的 onCreate() 开始新活动

问题描述

DirectorySelectionActivity如果应用程序是第一次立即从主要活动启动,但我的主要活动的onCreate()功能没有像我预期的那样启动新活动,我想开始一个新活动。相反,我的主要活动完成了它的onCreate()功能,只有在完成该oncreate()功能后,它才会移动到我的DirectorySelectionActivity. 在完成 onCreate() 之前,如何在主要活动的 onCreate() 函数中间移动到新活动?这就是我所拥有的:

MainActivity.java

public class MainActivity extends AppCompatActivity {        
    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_fragment);


        // If this is the first time user has run this app
         if(true){ // for testing
            Intent intent = new Intent(this, DirectorySelectionActivity.class);
            /* I've also tried:
               Intent intent = new Intent(MainActivity.this, DirectorySelectionActivity.class);
            */
            startActivity(intent);
            // Also tried:
            //this.startActivity(intent);

        }


        // This happens before my DirectorySelectionActivity activity gets started

        FragmentManager fm = getSupportFragmentManager();
        Fragment fragment = fm.findFragmentById(R.id.fragment_container);
        if (fragment == null) {
            fragment = createFragment();
            fm.beginTransaction().add(R.id.fragment_container, fragment).commit();
        }
    }
}

DirectorySelectionActivity.java

public class DirectorySelectionActivity extends AppCompatActivity  {

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



        FragmentManager fm = getSupportFragmentManager();
        Fragment fragment = fm.findFragmentById(R.id.fragment_container);
        if (fragment == null) {
            fragment = SelectUnwantedDirsFragment.newInstance();
            fm.beginTransaction().add(R.id.fragment_container, fragment).commit();
        }

    }

}

标签: androidandroid-intentandroid-activity

解决方案


如果您setContentView(R.layout.activity_fragment);从您MainActivity的 's中删除,onCreate()则它不会显示。
但是,如果您希望它在某个时候出现怎么办?
我建议使用布尔标志,如

if (flag) {
    setContentView(R.layout.activity_fragment);
}

推荐阅读