Android stdio调试程序闪退或者报错:"xxx keeps stopping"解决方案

Android studio调试程序闪退或者报错:"xxx keeps stopping"解决方案

初入安卓,写程序的途中遇到了好几次调试闪退,研究之后都成功解决,以此发文记录一下。

一.方法冲突

MainActivity.java

package com.example.testdemo;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

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

        //添加跳转事件
        Button btn = (Button) findViewById(R.id.list_view_vertical_stander);
        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent it = new Intent();
                it.setClass(MainActivity.this,SecondActivity.class);
                startActivity(it);
            }
        });
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        //加载建好的菜单xml文件
        getMenuInflater().inflate(R.menu.menu,menu);
        return super.onCreateOptionsMenu(menu);
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        //拿到菜单每项id,然后 switch判断具体是哪个菜单项,然后写点击后的具体操作
        int itemId=item.getItemId();
        switch (item.getItemId()){
            case R.id.list_view_vertical_stander:
                Toast.makeText(MainActivity.this,"您选择查看南部地区省长列表",Toast.LENGTH_LONG).show();
                break;
            case R.id.list_view_vertical_reverse:
                Toast.makeText(MainActivity.this,"您选择查看南部地区人大常委列表",Toast.LENGTH_LONG).show();
                break;
            case R.id.list_view_horizontal_stander:
                Toast.makeText(MainActivity.this,"您选择查看南部地区书记列表",Toast.LENGTH_LONG).show();
                break;
            case R.id.list_view_horizontal_reverse:
                Toast.makeText(MainActivity.this,"您选择查看南部地区行政专员列表", Toast.LENGTH_LONG).show();
                break;
            case R.id.grid_view_vertical_stander:
                Toast.makeText(MainActivity.this,"您选择查看中部地区省长列表",Toast.LENGTH_LONG).show();
                break;
            case R.id.grid_view_vertical_reverse:
                Toast.makeText(MainActivity.this,"您选择查看中部地区人大常委列表",Toast.LENGTH_LONG).show();
                break;
            case R.id.grid_view_horizontal_stander:
                Toast.makeText(MainActivity.this,"您选择查看中部地区书记列表",Toast.LENGTH_LONG).show();
                break;
            case R.id.grid_view_horizontal_reverse:
                Toast.makeText(MainActivity.this,"您选择查看中部地区行政专员",Toast.LENGTH_LONG).show();
                break;
            case R.id.stagger_view_vertical_stander:
                Toast.makeText(MainActivity.this,"您选择查看北部地区省长列表",Toast.LENGTH_LONG).show();
                break;
            case R.id.stagger_view_vertical_reverse:
                Toast.makeText(MainActivity.this,"您选择查看北部地区人大常委列表",Toast.LENGTH_LONG).show();
                break;
            case R.id.stagger_view_horizontal_stander:
                Toast.makeText(MainActivity.this,"您选择查看北部地区书记列表",Toast.LENGTH_LONG).show();
                break;
            case R.id.stagger_view_horizontal_reverse:
                Toast.makeText(MainActivity.this,"您选择查看北部地区行政专员",Toast.LENGTH_LONG).show();
                break;

        }
        return super.onOptionsItemSelected(item);
    }
}


<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:title="南部地区干部"  android:id="@+id/list_view">
        <menu>
            <item android:title="省长"  android:id="@+id/list_view_vertical_stander"/>
            <item android:title="人大常委"  android:id="@+id/list_view_vertical_reverse"/>
            <item android:title="书记"  android:id="@+id/list_view_horizontal_stander"/>
            <item android:title="行政专员"  android:id="@+id/list_view_horizontal_reverse"/>
        menu>
    item>
    <item android:title="中部地区干部" android:id="@+id/grid_view">
        <menu>
            <item android:title="省长"  android:id="@+id/grid_view_vertical_stander"/>
            <item android:title="人大常委"  android:id="@+id/grid_view_vertical_reverse"/>
            <item android:title="书记"  android:id="@+id/grid_view_horizontal_stander"/>
            <item android:title="行政专员"  android:id="@+id/grid_view_horizontal_reverse"/>
        menu>
    item>
    <item android:title="北部地区干部"  android:id="@+id/stagger_view">
        <menu>
            <item android:title="省长"  android:id="@+id/stagger_view_vertical_stander"/>
            <item android:title="人大常委"  android:id="@+id/stagger_view_vertical_reverse"/>
            <item android:title="书记"  android:id="@+id/stagger_view_horizontal_stander"/>
            <item android:title="行政专员"  android:id="@+id/stagger_view_horizontal_reverse"/>
        menu>
    item>
menu>

以下是效果图,一个简单的二级菜单页,点击能显示你选择了什么item。
Android stdio调试程序闪退或者报错:
然后我又新建了第二个页面准备让他实现跳转,就在第一个页面的**onCreate()**方法中绑定了跳转事件,加入如下代码。

//添加跳转事件
        Button btn = (Button) findViewById(R.id.list_view_vertical_stander);
        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent it = new Intent();
                it.setClass(MainActivity.this,SecondActivity.class);
                startActivity(it);
            }
        });

问题来了,然后开始调试,程序就闪退——“xxx keeps stopping”

经检查后发现,是onOptionsItemSelected()方法和我onCreate()方法产生冲突,实现了同一个点击事件!!

只要把onCreate()方法中的点击跳转事件放到同一个事件即可。


二.参数类型不符

例如想给某个textView的text属性赋值调用 textView1.setText(xxx) 方法,其中的xxx必须为指定参数类型String,否则程序也会闪退。

你可能感兴趣的:(Android,android,java)