OnCreate 未在 Activity 上调用

Posted

技术标签:

【中文标题】OnCreate 未在 Activity 上调用【英文标题】:OnCreate not called on Activity 【发布时间】:2015-07-04 11:01:46 【问题描述】:

我创建了AbstractActivityAbstractFormActivity 来删除一些样板代码,它们的内容可能与问题无关,但我还是会发布它,也许我误解了一些东西,它们是:

public abstract class AbstractActivity extends ActionBarActivity 

    protected ObjectGraph graph;

    @Inject
    public Bus bus;

    @Inject
    public App app;

    @Override
    public void onCreate(Bundle savedInstanceState, PersistableBundle persistentState) 
        super.onCreate(savedInstanceState, persistentState);
        setContentView(getLayout());
        setupInjection();
    

    public void setupInjection() 
        graph = ((App) getApplication()).createScopedGraph(getModule());
        graph.inject(this);
        bus.register(this);
        ButterKnife.inject(this);
    

    protected abstract Object getModule();
    protected abstract int getLayout();

public abstract class AbstractFormActivity<T extends EntidadeBase> extends AbstractActivity implements Form<T> 

    protected T entity;
    protected Map<View, Boolean> formValidations;
    protected AbstractFormActivity() 
       formValidations = new HashMap<View, Boolean>();
    

    @Override
    public void onCreate(Bundle savedInstanceState, PersistableBundle persistentState) 
        super.onCreate(savedInstanceState, persistentState);
    

    protected boolean passedValidations() 
        for (View key : formValidations.keySet()) 
            if (!formValidations.get(key)) 
                return false;
            
        
        return true;
    

    protected void validateAndSolidify() 
        if (passedValidations()) 
            solidify();
        
        entity = null;
    

    @Override
    public void validateMoreComplexFields() 
    

最后我创建了这些母活动的实现:

public class MercadoriaFormActivity extends AbstractFormActivity<Mercadoria> 

...

   @Override
   public void onCreate(Bundle savedInstanceState, PersistableBundle persistentState) 
        super.onCreate(savedInstanceState, persistentState);
    

...


我的问题是onCreate方法没有被调用。

非常感谢任何帮助。

【问题讨论】:

【参考方案1】:

您当前使用的onCreate() 版本已添加到android 21。您应该改用以下版本:

protected void onCreate (Bundle savedInstanceState)

【讨论】:

帮助很大。感谢您睁开眼睛 :) 我以快速的方式添加了 onCreate,但没有注意到我添加了 API 21 中的那个。非常感谢! :)【参考方案2】:

我也遇到了同样的问题。 几个小时后,我发现我的错误,而不是 (savedInstanceState: Bundle, persistentState: PersistableBundle) 函数必须覆盖下面的函数。

override fun onCreate(savedInstanceState: Bundle?) 
    super.onCreate(savedInstanceState)

【讨论】:

以上是关于OnCreate 未在 Activity 上调用的主要内容,如果未能解决你的问题,请参考以下文章

多次调用“activity.onCreate()”方法是不是正常

为啥说安卓activity的onCreate()方法 只调用一次

创建 Activity 对象时是不是调用 onCreate?

AndroidX 迁移后,ListView 未在 OnCreate/OnStart 上显示任何数据

Android - 将用户发送到 Activity 的 GCM 推送通知不会导致 onCreate 调用

如何避免在启动 Activity 时调用 onCreate()?