简体   繁体   中英

Interpreting error messages from logcat in android studio

I am trying to build an app but when I test it, the app crashes before it opens. Looking at the logcat, I get these messages:

2020-09-19 12:51:13.619 5686-5686/? E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.josullivan.mytestapplication, PID: 5686
java.lang.RuntimeException: Unable to start activity 
ComponentInfo{com.josullivan.mytestapplication/com.josullivan.mytestapplication.MainActivity}: 
android.view.InflateException: Binary XML file line #34 in 
com.josullivan.mytestapplication:layout/activity_main: Binary XML file line #34 in 
com.josullivan.mytestapplication:layout/activity_main: Error inflating class 
com.google.android.material.navigation.NavigationView
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3449)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3601)
    at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:85)
    at 
android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
    at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2066)
    at android.os.Handler.dispatchMessage(Handler.java:106)
    at android.os.Looper.loop(Looper.java:223)
    at android.app.ActivityThread.main(ActivityThread.java:7656)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)
 Caused by: android.view.InflateException: Binary XML file line #34 in 
com.josullivan.mytestapplication:layout/activity_main: Binary XML file line #34 in 
com.josullivan.mytestapplication:layout/activity_main: Error inflating class 
com.google.android.material.navigation.NavigationView
 Caused by: android.view.InflateException: Binary XML file line #34 in 
com.josullivan.mytestapplication:layout/activity_main: Error inflating class 
com.google.android.material.navigation.NavigationView
 Caused by: java.lang.reflect.InvocationTargetException
    at java.lang.reflect.Constructor.newInstance0(Native Method)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:343)
    at android.view.LayoutInflater.createView(LayoutInflater.java:852)
    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:1004)
    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:959)
    at android.view.LayoutInflater.rInflate(LayoutInflater.java:1121)
    at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:1082)
    at android.view.LayoutInflater.inflate(LayoutInflater.java:680)
    at android.view.LayoutInflater.inflate(LayoutInflater.java:532)
    at android.view.LayoutInflater.inflate(LayoutInflater.java:479)
    at androidx.appcompat.app.AppCompatDelegateImpl.setContentView(AppCompatDelegateImpl.java:696)
    at androidx.appcompat.app.AppCompatActivity.setContentView(AppCompatActivity.java:170)
    at com.josullivan.mytestapplication.MainActivity.onCreate(MainActivity.java:48)
    at android.app.Activity.performCreate(Activity.java:8000)
    at android.app.Activity.performCreate(Activity.java:7984)
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1309)
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3422)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3601)
    at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:85)
    at 
android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
    at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2066)
    at android.os.Handler.dispatchMessage(Handler.java:106)
    at android.os.Looper.loop(Looper.java:223)
    at android.app.ActivityThread.main(ActivityThread.java:7656)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)
2020-09-19 12:51:13.620 5686-5686/? E/AndroidRuntime: Caused by: android.view.InflateException: 
Couldn't resolve menu item onClick handler onClickHandler in class 
com.josullivan.mytestapplication.MainActivity
    at androidx.appcompat.view.SupportMenuInflater$InflatedOnMenuItemClickListener.<init> 
(SupportMenuInflater.java:255)
    at androidx.appcompat.view.SupportMenuInflater$MenuState.setItem(SupportMenuInflater.java:484)
    at androidx.appcompat.view.SupportMenuInflater$MenuState.addItem(SupportMenuInflater.java:531)
    at androidx.appcompat.view.SupportMenuInflater.parseMenu(SupportMenuInflater.java:207)
    at androidx.appcompat.view.SupportMenuInflater.inflate(SupportMenuInflater.java:129)
    at com.google.android.material.navigation.NavigationView.inflateMenu(NavigationView.java:366)
    at com.google.android.material.navigation.NavigationView.<init>(NavigationView.java:234)
    at com.google.android.material.navigation.NavigationView.<init>(NavigationView.java:121)
        ... 28 more
 Caused by: java.lang.NoSuchMethodException: 
com.josullivan.mytestapplication.MainActivity.onClickHandler [interface android.view.MenuItem]
    at java.lang.Class.getMethod(Class.java:2072)
    at java.lang.Class.getMethod(Class.java:1693)
    at androidx.appcompat.view.SupportMenuInflater$InflatedOnMenuItemClickListener.<init> 
(SupportMenuInflater.java:251)
        ... 35 more

It says towards the end it can't resolve onClickHandler on menu item which I think is causing the issue but I don't know how. My app will have multiple fragments that each will (assuming I can get it working) have multiple canvases to draw shapes with a finger, so I used an onClickHandler to initialize a paintView class in MainActivity.java with the correct custom canvas view so as to draw with a finger on the appropriate view. Do you have any idea why it's causing this issue and how to fix this it? I am new to java coding so, can you explain it to me like I'm 5 years old? Many thanks

MainActivity.java

package com.josullivan.mytestapplication;

import androidx.annotation.NonNull;
import androidx.appcompat.app.ActionBarDrawerToggle;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;
import androidx.core.view.GravityCompat;
import androidx.drawerlayout.widget.DrawerLayout;

import android.os.Bundle;
import android.util.DisplayMetrics;
import android.view.MenuItem;
import android.view.MotionEvent;
import android.view.View;
import android.widget.Toast;






import android.view.Menu;
import android.view.MenuInflater;


import com.google.android.material.navigation.NavigationView;

public class MainActivity extends AppCompatActivity implements 
NavigationView.OnNavigationItemSelectedListener {

private DrawerLayout drawer;
private PaintView paintView;


public void onClickHandler(View view) {
    switch (view.getId()) {
        case R.id.nav_chat:
            paintView = (PaintView) findViewById(R.id.paintView1);
            DisplayMetrics metrics = new DisplayMetrics();
            getWindowManager().getDefaultDisplay().getMetrics(metrics);
            paintView.init(metrics);
            break;
    }
 }


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    Toolbar toolbar = findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);

    drawer = findViewById(R.id.drawer_layout);
    NavigationView navigationView = findViewById(R.id.nav_view);
    navigationView.setNavigationItemSelectedListener(this);

    ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(this, drawer, 
toolbar, R.string.navigation_drawer_open,R.string.navigation_drawer_close);
    drawer.addDrawerListener(toggle);
    toggle.syncState();

    if (savedInstanceState == null) {
        


 getSupportFragmentManager().beginTransaction().replace( 
 R.id.fragment_container, 
 new MessageFragment()).commit();
        navigationView.setCheckedItem(R.id.nav_message);
    }
 }




 @Override
 public boolean onNavigationItemSelected(@NonNull MenuItem item) {
    switch (item.getItemId()) {
        case R.id.nav_message:

            
 getSupportFragmentManager().beginTransaction().replace( 
 R.id.fragment_container, new MessageFragment()).commit();
            break;
        case R.id.nav_chat:

            getSupportFragmentManager().beginTransaction().replace( 
R.id.fragment_container, new ChatFragment()).commit();

            
            break;



        case R.id.nav_profile:
            getSupportFragmentManager().beginTransaction().replace( 
R.id.fragment_container, new ProfileFragment()).commit();
            break;
        case R.id.nav_share:
            Toast.makeText(this, "Share", Toast.LENGTH_SHORT).show();
            break;
        case R.id.nav_send:
            Toast.makeText(this, "Send", Toast.LENGTH_SHORT).show();
            break;
    }

    drawer.closeDrawer(GravityCompat.START);

    return true;
}

@Override
public void onBackPressed() {
    if (drawer.isDrawerOpen(GravityCompat.START)){
        drawer.closeDrawer(GravityCompat.START);
    } else {
        super.onBackPressed();
    }
}
}
  1. There is something wrong in the XML-file corresponding to the MainActivity- check line 34 as the message output suggests "Binary XML file line #34"
  2. Can you provide further information? Post the code of MainActivity, do you have the onClickHandler implemented or is it missing?

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM