Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Caused by android.content.res.Resources$NotFoundException #19

Open
tepkuh opened this issue May 20, 2021 · 0 comments
Open

Caused by android.content.res.Resources$NotFoundException #19

tepkuh opened this issue May 20, 2021 · 0 comments

Comments

@tepkuh
Copy link

tepkuh commented May 20, 2021

Hello guys,
I have issue with out framework. Could you please check stackstrace and say what i'm doing wrong

package app.autobook.ui.login;

import android.content.Intent;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.EditText;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import androidx.lifecycle.ViewModelProvider;
import androidx.navigation.Navigation;

import com.google.android.gms.auth.api.signin.GoogleSignIn;
import com.google.android.gms.auth.api.signin.GoogleSignInAccount;

import com.google.android.gms.common.api.ApiException;

import com.google.android.gms.tasks.Task;
import com.shobhitpuri.custombuttons.GoogleSignInButton;

import java.util.HashMap;
import java.util.Map;

import app.autobook.R;
import app.autobook.common.KeyboardHelper;
import app.autobook.common.Loading;
import app.autobook.common.NotificationHelper;
import app.autobook.common.StateData;
import app.autobook.common.Statistics;
import app.autobook.entity.rest.Message;
import app.autobook.ui.login.model.LoginViewModel;
import timber.log.Timber;

public class AuthFragment extends Fragment {
    private View rootView;
    private EditText usernameInput;
    private EditText passwordInput;
    private LoginViewModel loginViewModel;
    private Button loginBtn;
    private GoogleSignInButton googleSignInBtn;
    public static final int RC_SIGN_IN = 0;


    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        Timber.d( "onCreateView");
        rootView =  inflater.inflate(R.layout.fragment_login_auth, container, false);
        loginBtn = rootView.findViewById(R.id.btn_login);
        loginViewModel = new ViewModelProvider(requireActivity()).get(LoginViewModel.class);
        googleSignInBtn = rootView.findViewById(R.id.google_sign_in_btn);

        return rootView;
    }

    @Override
    public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);
        Timber.d("onViewCreated");

        loginViewModel.getAuthenticationState().observe(getViewLifecycleOwner(), authenticationState -> {
            if (authenticationState.getStatus().equals(StateData.DataStatus.LOADING)){
                Loading.show(requireActivity());
            }else{
                Loading.hide(requireActivity());
                googleSignInBtn.setEnabled(true);
            }

            if (authenticationState.getStatus().equals(StateData.DataStatus.SUCCESS)){
                Statistics.logEvent("AUTH: "+authenticationState.getData());
                if(authenticationState.getData()!=null && authenticationState.getData().equals(LoginViewModel.AuthenticationState.AUTHENTICATED)){
                    Navigation.findNavController(view).navigate(R.id.workspaceFragment);
                }else{
                    NotificationHelper.showSnackbar(authenticationState.getData().toString(), view);
                }
            }else if (authenticationState.getStatus().equals(StateData.DataStatus.ERROR)){
                NotificationHelper.errorScreen(view,authenticationState,"getStatus()",this.getClass());
            }
        });

        loginViewModel.getTokenState().observe(getViewLifecycleOwner(), tokenState -> {
            if (tokenState.getStatus().equals(StateData.DataStatus.LOADING)){
                Loading.show(requireActivity());
            }else{
                Loading.hide(requireActivity());
                googleSignInBtn.setEnabled(true);
            }
            if (tokenState.getStatus().equals(StateData.DataStatus.SUCCESS)){
                Message message = tokenState.getData();
                Timber.i("token status code: '%s'", message.getCode());

                Map<String, String> property = new HashMap<>();
                property.put("code",  Integer.toString(message.getCode()));
                property.put("message",  message.getMessage().toString());

                if (message.getCode()==1){
                    Statistics.logEvent("AUTH: SUCCESS TOKEN");
                    NotificationHelper.showSnackbar("Авторизация проверена", view);
                }else if (message.getCode()==-10004 || message.getCode()==-10005){
                    property.put("code",  Integer.toString(message.getCode()));
                    Statistics.logEvent("AUTH: TOKEN ERROR", property);
                    NotificationHelper.showSnackbar("Google не подтвердил вашу авторизацию", view);
                }else if (message.getCode()==-10006){
                    Statistics.logEvent("AUTH: TOKEN ERROR", property);
                    NotificationHelper.showSnackbar("Авторизация устарела", view);
                }else if (message.getCode()==-10007){
                    Statistics.logEvent("AUTH: TOKEN ERROR", property);
                    NotificationHelper.showSnackbar("Почта не подтверждена", view);
                }else{
                    Statistics.logEvent("AUTH: TOKEN ERROR", property);
                    NotificationHelper.showSnackbar("Не известный код ответа: "+message.getCode(), view);
                }

            }else if (tokenState.getStatus().equals(StateData.DataStatus.ERROR)){
                NotificationHelper.errorScreen(view,tokenState,"getTokenState()",this.getClass());
            }
        });

        init(view);
    }

    private void init(View view) {
        usernameInput = view.findViewById(R.id.username);
        passwordInput = view.findViewById(R.id.password);
        usernameInput.setText(loginViewModel.getUsername());
        passwordInput.setText(loginViewModel.getPassword());

        //Обработка кнопки "Войти с Google"
        googleSignInBtn.setOnClickListener(v -> {
            Timber.i("OnClick: google_btn_login");
            Statistics.logEvent("AUTH: Google OnClick");
            googleSignInBtn.setEnabled(false);
            Intent signInIntent = loginViewModel.googleSignInClient.getSignInIntent();
            startActivityForResult(signInIntent, RC_SIGN_IN);
        });

        //Обработка кнопки "Войти"
        loginBtn.setOnClickListener(v -> {
            Timber.i("OnClick: btn_login");
            Statistics.logEvent("AUTH: Login OnClick");
            KeyboardHelper.hide(requireActivity());
            String username = usernameInput.getText().toString().toLowerCase().trim();
            String password = passwordInput.getText().toString().trim();
            loginViewModel.authenticate(username, password);
        });

        //Обработка кнопки "Забыли пароль"
        view.findViewById(R.id.btn_fogot).setOnClickListener(v -> {
            Timber.i("OnClick: btn_fogot");
            Statistics.logEvent("AUTH: Forget OnClick");
            Navigation.findNavController(v).navigate(R.id.forgetFragment);
        });

        //Обработка кнопки "Зарегистрироватся"
        view.findViewById(R.id.btn_registration).setOnClickListener(v -> {
            Timber.i("OnClick: btn_registration");
            Statistics.logEvent("AUTH: Registration OnClick");
            Navigation.findNavController(v).navigate(R.id.registrationFragment);
        });
    }

    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (requestCode == RC_SIGN_IN) {
            Task<GoogleSignInAccount> task = GoogleSignIn.getSignedInAccountFromIntent(data);
            try {
                GoogleSignInAccount account = task.getResult(ApiException.class);
                loginViewModel.authenticateByToken(account);
            } catch (ApiException e) {
                googleSignInBtn.setEnabled(true);
                Statistics.logEvent("AUTH: Google canceled");
                Timber.e(e);
                //NotificationHelper.errorScreen(rootView,authenticationState,"getStatus()",this.getClass());
            }
        }
    }
}
Caused by android.content.res.Resources$NotFoundException: Unable to find resource ID #0x7f070068
       at android.content.res.ResourcesImpl.getResourceName(ResourcesImpl.java:255)
       at android.content.res.ResourcesImpl.loadDrawableForCookie(ResourcesImpl.java:785)
       at android.content.res.ResourcesImpl.loadDrawable(ResourcesImpl.java:631)
       at android.content.res.Resources.loadDrawable(Resources.java:897)
       at android.content.res.TypedArray.getDrawableForDensity(TypedArray.java:955)
       at android.content.res.TypedArray.getDrawable(TypedArray.java:930)
       at android.content.res.XResources$XTypedArray.getDrawable(XResources.java:1374)
       at android.graphics.drawable.StateListDrawable.inflateChildElements(StateListDrawable.java:177)
       at android.graphics.drawable.StateListDrawable.inflate(StateListDrawable.java:122)
       at android.graphics.drawable.DrawableInflater.inflateFromXmlForDensity(DrawableInflater.java:142)
       at android.graphics.drawable.Drawable.createFromXmlInnerForDensity(Drawable.java:1332)
       at android.graphics.drawable.Drawable.createFromXmlForDensity(Drawable.java:1291)
       at android.content.res.ResourcesImpl.loadDrawableForCookie(ResourcesImpl.java:833)
       at android.content.res.ResourcesImpl.loadDrawable(ResourcesImpl.java:631)
       at android.content.res.Resources.getDrawableForDensity(Resources.java:888)
       at android.content.res.XResources.getDrawableForDensity(XResources.java:874)
       at android.content.res.Resources.getDrawable(Resources.java:827)
       at android.content.res.XResources.getDrawable(XResources.java:796)
       at android.content.Context.getDrawable(Context.java:626)
       at android.view.View.setBackgroundResource(View.java:21451)
       at androidx.appcompat.widget.AppCompatButton.setBackgroundResource(AppCompatButton.java:88)
       at com.shobhitpuri.custombuttons.GoogleSignInButton.setButtonBackground(GoogleSignInButton.java:160)
       at com.shobhitpuri.custombuttons.GoogleSignInButton.setButtonParams(GoogleSignInButton.java:143)
       at com.shobhitpuri.custombuttons.GoogleSignInButton.init(GoogleSignInButton.java:100)
       at com.shobhitpuri.custombuttons.GoogleSignInButton.<init>(GoogleSignInButton.java:77)
       at java.lang.reflect.Constructor.newInstance0(Constructor.java)
       at java.lang.reflect.Constructor.newInstance(Constructor.java:343)
       at android.view.LayoutInflater.createView(LayoutInflater.java:647)
       at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:790)
       at EdHooker_.hook(:186)
       at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:730)
       at android.view.LayoutInflater.rInflate(LayoutInflater.java:863)
       at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824)
       at android.view.LayoutInflater.rInflate(LayoutInflater.java:866)
       at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824)
       at android.view.LayoutInflater.rInflate(LayoutInflater.java:866)
       at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824)
       at android.view.LayoutInflater.rInflate(LayoutInflater.java:866)
       at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824)
       at android.view.LayoutInflater.inflate(LayoutInflater.java:515)
       at EdHooker_.hook(:156)
       at android.view.LayoutInflater.inflate(LayoutInflater.java:423)
       at app.autobook.ui.login.AuthFragment.onCreateView(AuthFragment.java:51)
       at androidx.fragment.app.Fragment.performCreateView(Fragment.java:2698)
       at androidx.fragment.app.FragmentStateManager.createView(FragmentStateManager.java:320)
       at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1187)
       at androidx.fragment.app.FragmentManager.addAddedFragments(FragmentManager.java:2224)
       at androidx.fragment.app.FragmentManager.executeOpsTogether(FragmentManager.java:1997)
       at androidx.fragment.app.FragmentManager.removeRedundantOperationsAndExecute(FragmentManager.java:1953)
       at androidx.fragment.app.FragmentManager.execPendingActions(FragmentManager.java:1849)
       at androidx.fragment.app.FragmentManager$4.run(FragmentManager.java:413)
       at android.os.Handler.handleCallback(Handler.java:873)
       at android.os.Handler.dispatchMessage(Handler.java:99)
       at android.os.Looper.loop(Looper.java:193)
       at android.app.ActivityThread.main(ActivityThread.java:6669)
       at java.lang.reflect.Method.invoke(Method.java)
       at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant