Hazed 2.0
Hazed 2.0

Reputation: 133

Android app seems to be crashing on launch on KitKat 4.4

My app when installed on my relatively new Huawei running Oreo 8.0 is able to launch and run the app smoothly. The app also runs fine on the Nexus Emulator running Lollipop. However, on my other phone running KitKat 4.4 the app crashes when launched.

I think the problem occured when I added a default NavigationDrawerActivity.

09-05 14:05:57.285 30968-30968/? E/AndroidRuntime: FATAL EXCEPTION: main Process: com.example.a_phi.myapplication, PID: 30968 java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.a_phi.myapplication/com.example.a_phi.myapplication.LoginActivity}: android.view.InflateException: Binary XML file line #2: Error inflating class at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2264) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2313) at android.app.ActivityThread.access$1100(ActivityThread.java:141) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1238) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:136) at android.app.ActivityThread.main(ActivityThread.java:5333) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:515) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:895) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:711) at dalvik.system.NativeStart.main(Native Method) Caused by: android.view.InflateException: Binary XML file line #2: Error inflating class at android.view.LayoutInflater.createView(LayoutInflater.java:620) at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:56) at android.view.LayoutInflater.onCreateView(LayoutInflater.java:669) at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:694) at android.view.LayoutInflater.inflate(LayoutInflater.java:469) at android.view.LayoutInflater.inflate(LayoutInflater.java:397) at android.view.LayoutInflater.inflate(LayoutInflater.java:353) at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:290) at android.app.Activity.setContentView(Activity.java:1958) at com.example.a_phi.myapplication.LoginActivity.onCreate(LoginActivity.java:44) at android.app.Activity.performCreate(Activity.java:5340) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2228) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2313)  at android.app.ActivityThread.access$1100(ActivityThread.java:141)  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1238)  at android.os.Handler.dispatchMessage(Handler.java:102)  at android.os.Looper.loop(Looper.java:136)  at android.app.ActivityThread.main(ActivityThread.java:5333)  at java.lang.reflect.Method.invokeNative(Native Method)  at java.lang.reflect.Method.invoke(Method.java:515)  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:895)  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:711)  at dalvik.system.NativeStart.main(Native Method)  Caused by: java.lang.reflect.InvocationTargetException at java.lang.reflect.Constructor.constructNative(Native Method) at java.lang.reflect.Constructor.newInstance(Constructor.java:423) at android.view.LayoutInflater.createView(LayoutInflater.java:594) at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:56)  at android.view.LayoutInflater.onCreateView(LayoutInflater.java:669)  at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:694)  at android.view.LayoutInflater.inflate(LayoutInflater.java:469)  at android.view.LayoutInflater.inflate(LayoutInflater.java:397)  at android.view.LayoutInflater.inflate(LayoutInflater.java:353)  at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:290)  at android.app.Activity.setContentView(Activity.java:1958)  at com.example.a_phi.myapplication.LoginActivity.onCreate(LoginActivity.java:44)  at android.app.Activity.performCreate(Activity.java:5340)  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2228)  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2313)  at android.app.ActivityThread.access$1100(ActivityThread.java:141)  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1238)  at android.os.Handler.dispatchMessage(Handler.java:102)  at android.os.Looper.loop(Looper.java:136)  at android.app.ActivityThread.main(ActivityThread.java:5333)  at java.lang.reflect.Method.invokeNative(Native Method)  at java.lang.reflect.Method.invoke(Method.java:515)  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:895)  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:711)  at dalvik.system.NativeStart.main(Native Method)  Caused by: java.lang.NullPointerException at com.huawei.android.content.res.ResourcesEx.getThemeDrawable(ResourcesEx.java:655) at com.huawei.android.content.res.ResourcesEx.loadDrawable(ResourcesEx.java:623) at android.content.res.TypedArray.getDrawable(TypedArray.java:616) at android.view.View.(View.java:3573) at android.view.ViewGroup.(ViewGroup.java:470) at android.widget.LinearLayout.(LinearLayout.java:179) at android.widget.LinearLayout.(LinearLayout.java:175) at java.lang.reflect.Constructor.constructNative(Native Method)  at java.lang.reflect.Constructor.newInstance(Constructor.java:423)  at android.view.LayoutInflater.createView(LayoutInflater.java:594)  at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:56)  at android.view.LayoutInflater.onCreateView(LayoutInflater.java:669)  at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:694)  at android.view.LayoutInflater.inflate(LayoutInflater.java:469)  at android.view.LayoutInflater.inflate(LayoutInflater.java:397)  at android.view.LayoutInflater.inflate(LayoutInflater.java:353)  at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:290)  at android.app.Activity.setContentView(Activity.java:1958)  at com.example.a_phi.myapplication.LoginActivity.onCreate(LoginActivity.java:44)  at android.app.Activity.performCreate(Activity.java:5340)  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2228)  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2313)  at android.app.ActivityThread.access$1100(ActivityThread.java:141)  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1238)  at android.os.Handler.dispatchMessage(Handler.java:102)  at android.os.Looper.loop(Looper.java:136)  at android.app.ActivityThread.main(ActivityThread.java:5333)  at java.lang.reflect.Method.invokeNative(Native Method)  at java.lang.reflect.Method.invoke(Method.java:515)  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:895)  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:711)  at dalvik.system.NativeStart.main(Native Method)

LoginActvity 

public class LoginActivity extends Activity {


    private UserLoginTask mAuthTask = null;

    // UI references.
    private EditText mEmailView;
    private EditText mPasswordView;
    private TextView mRegistrationScreen;
    private View mProgressView;
    private View mLoginFormView;
    public String id;

    @Override
    @TargetApi(19)
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);
        ActivityCompat.requestPermissions(this,new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, 1);

        setContentView(R.layout.activity_login_registration);
        // Set up the login form.
        mEmailView = (EditText) findViewById(R.id.email);
        mPasswordView = (EditText) findViewById(R.id.password);

        Button mEmailSignInButton = (Button) findViewById(R.id.email_sign_in_button);

        mLoginFormView = findViewById(R.id.login_form);
        mProgressView = findViewById(R.id.login_progress);
        mRegistrationScreen = findViewById(R.id.registerLink);
        mEmailSignInButton.setOnClickListener(new OnClickListener() {

            public void onClick(View v) {
                String emailAddress = mEmailView.getText().toString().trim();
                String password = mPasswordView.getText().toString().trim();
                UserLoginTask callDOIB = new UserLoginTask();
                try {
                    String loginSuccessFail = callDOIB.execute(emailAddress, password).get();
                    try {
                        JSONObject jsonObject = new JSONObject(loginSuccessFail);
                        id = jsonObject.getString("id");
                        //JSONObject id = jArray.getJSONObject(0);
                        System.out.println("json object at LoginActivity id is "+id);
                        authoriseLogin(loginSuccessFail, id);
                    }catch (JSONException e){
                        e.printStackTrace();
                    }

                }catch(InterruptedException e){
                    e.printStackTrace();
                }
                catch (ExecutionException e){
                    e.printStackTrace();
                }
            }
        });

        mRegistrationScreen.setOnClickListener(new OnClickListener(){
            public void onClick(View v){
                Intent loadRegistration = new Intent(LoginActivity.this, RegisterActivity.class);
                startActivity(loadRegistration);
            }
        });
    }






    public void authoriseLogin(String authorise, String id){
        if (authorise.contains("id")) {
            System.out.println(" accessLRA.authoriseLogin login has been called");
            Session session = new Session(getApplicationContext());
            session.setId(id);
            Intent loadPersonal = new Intent(LoginActivity.this, MainActivity.class);
            startActivity(loadPersonal);

            System.out.println("Login has been authorised");
        }
        else{
            System.out.println("Incorrect username or password");
        }
    }





    }

It is giving me an inflate exception when loading the layout file using setContentView()

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.a_phi.myapplication/com.example.a_phi.myapplication.LoginActivity}: android.view.InflateException: Binary XML file line #2: Error inflating class

Upvotes: 0

Views: 468

Answers (1)

Hazed 2.0
Hazed 2.0

Reputation: 133

As suggested in the comments section, I was actually missing some other res -v21 folders which support API level 21 for Android KitKat. For some reason I didn't move them into my new project. It is working now, thank you.

Upvotes: 0

Related Questions