Метод onCreate не вызывается - PullRequest
0 голосов
/ 14 июня 2019

Я использую Dagger2.22 для инъекции MainActivity , которая расширяет BaseActivity , а BaseActivity расширяет DaggerAppCompatActivity . Кажется, что методы onCreate() обоих действий не вызываются, поскольку я вызывал функцию внутри onCreate () из BaseActivity , и это не работало, когда я поставил операторы log внутри них также не распечатываются, и когда я установил отладчик на onStart () и onCreate () обеих операций затем получается, что вместо onCreate () вызывается метод onStart () метод MainActivity с последующим onStart () из BaseActivity вызывается. Хотя MainActivity отображается, и если бы он был создан, то вызывался бы метод onCreate () , но никакой код внутри метода onCreate () не работает ни они не вызваны в отладке. Я не понимаю, что, черт возьми, происходит?

BaseActivity

public abstract class BaseActivity extends DaggerAppCompatActivity {
    private static final String TAG = BaseActivity.class.getSimpleName();

    @Inject
    public SessionManager sessionManager;

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

        Log.d(TAG, "onCreate: ");
    }

    @Override
    protected void onStart() {
        super.onStart();
        Log.d(TAG, "onStart: ");


    }

    private void subscribeObservers(){
        Log.d(TAG, "subscribeObservers: ");
        sessionManager.getAuthUser().observe(this, new Observer<AuthResource<User>>() {
            @Override
            public void onChanged(AuthResource<User> userAuthResource) {
                Log.d(TAG, "onChanged: auth resource ==> " + userAuthResource + "auth status ==> " + userAuthResource.status);
                if (userAuthResource != null) {
                    Log.d(TAG, "onChanged: auth status ==> " + userAuthResource.status);

                    switch (userAuthResource.status) {
                        case LOADING: {
                            break;
                        }
                        case AUTHENTICATED: {
                            Log.d(TAG, "onChanged: LOGIN SUCCESS: " + userAuthResource.data.getEmail());
                            break;
                        }
                        case ERROR: {
                            Toast.makeText(BaseActivity.this, userAuthResource.message +
                                            "\nDid you enter number between 1 and 10",
                                    Toast.LENGTH_SHORT).show();
                            break;
                        }
                        case NOT_AUTHENTICATED: {
                            navLoginScreen();
                            break;
                        }
                    }
                }
            }
        });
    }

    private void navLoginScreen(){
        Intent intent = new Intent(this, AuthActivity.class);
        startActivity(intent);
        finish();
    }
}

MainActivity

public class MainActivity extends BaseActivity {
    private static final String TAG = MainActivity.class.getSimpleName();

    @Override
    public void onCreate(@Nullable Bundle savedInstanceState, @Nullable PersistableBundle persistentState) {
        super.onCreate(savedInstanceState, persistentState);
        setContentView(R.layout.activity_main);

        Log.d(TAG, "onCreate: ");

    }

    @Override
    protected void onStart() {
        super.onStart();

        Log.d(TAG, "onStart: ");
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.main_menu, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch(item.getItemId()) {
            case R.id.logout: {
                sessionManager.logout();
                return true;
            }
            default:
                return super.onOptionsItemSelected(item);
        }
    }
}

Это модуль, который я вставил в компонент
ActivityBuildersModule


@Module
public abstract class ActivityBuildersModule {
    @ContributesAndroidInjector(modules = {
            AuthViewModelsModule.class,
            AuthModule.class
    })
    abstract AuthActivity contributeAuthActivity();

    @ContributesAndroidInjector
    abstract MainActivity contributeMainActivity();

}

1 Ответ

1 голос
/ 14 июня 2019

Подпись onCreate() для переопределения такова:

protected void onCreate(@Nullable Bundle savedInstanceState)

, а не то, что вы переопределяете в своем коде.

...