android studio 移动开发学习过程中遇到的错误和解决办法小笔记 TvT

4.8

安装之后出现了各种奇奇怪怪的问题又是adb.exe起不来又是巴拉巴拉我也看不明白的。
讲道理 adb.exe起不来有可能是端口被占用,一般是用5037这个端口号,然后打开cmd命令行输入 netstat -ano|findstr “5037” 找到进程号,然后打开任务管理器把这个进程关掉就好了,但是我的没用,越弄错误越多,然后我重装系统就好了。。老师说的有道理,有辣么多时间去解决,系统早装好了HHH。重装了系统果然有用~

4.9

(1)
但是我一写代码还是出来了一堆乱七八糟的错误,第一个是 在

 Button btnadd =  findViewById(R.id.btnadd);

提示 cannot resolve symbol “Button………
百度了 大家说 File ->invalidate and Restart 就可以了
还有的解决方法是 Build ->Clean and Rebuild Project
不行就多试几次多试几次 所以我真的试了好久。。还是没有用呀
旁边还有一句是 android.widget.Button?Alt+Enter
但是我按alt+enter 是换行。。。
是在没办法就去百度了下android.widget.Button
然后发现 cannot resolve symbol “Button..是告诉我要导入android.widget.Button 类包,手动输入

import android.widget.Button;

就ok啦

百度到的在这里
(2)

bundle.putInt("param1",param1.getText().toString());

错误提示
Wrong 2nd argument type. Found: ‘java.lang.String’, required: ‘int….
错误的第二参数类型。
发现我的param1.getText().toString()是String类型的而这里需要的是int类型
改成

bundle.putInt("param1",Integer.parseInt(param1.getText().toString()));

5.4

1.编译器版本问题 、
这几天在做一个学生成绩管理系统的作业!手贱点了更新android studio!然后就出错了!简直让人绝望!反正是提示什么编译器版本问题的!compileSdkVersion 我的手机和编译器的SDK版本不一致把大概是,一个 26, 一个 27
这个是在build.grade里面把SDKVersion改成27
2.报错:You need to use a Theme.Appcompat theme(or descendant) with this activity
我改了主题,<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
但是我的Activity extends的是Activity 不是AppCompatActivity,所以就出错了,改回来就好了如果不行就reduil或者restar试试!
3.数据库问题java.lang.IllegalStateException: attempt to re-open an already-closed object
出现这个错误是因为我在每次调用了数据库方法之后都调用close()关闭数据库,导致直接关闭了SQLiteDatabase对象,导致外面的数据库查询操作报错。每个线程线程只能使用一个SQLiteOpenHelper,也不要关闭,除非退出程序!!我把写了 close都删掉就好了!网上有建议说可以把 .close 单独封装成方法,在activity destory时,调用,虽然不美观,但很实用。

5.17 NavigationView侧边栏点击无效

最近的作业使用了侧边栏,但是侧边栏点击一直无效,onNavigationItemSelected()方法也没有问题,是因为在layout布局中 侧边栏没有放在最后,要放在最后才有效

<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/drawer_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true"
    tools:openDrawer="start">
 <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">
        ...
    </LinearLayout>
     <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">
        ...
    </LinearLayout>
 <android.support.design.widget.NavigationView
        android:id="@+id/nav_view"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        android:fitsSystemWindows="true"
        app:headerLayout="@layout/nav_header_nav"
        app:menu="@menu/activity_nav_drawer" />
    </android.support.v4.widget.DrawerLayout>

5.17 把登录名显示到侧边栏时出现空指针错误

Caused by: java.lang.NullPointerException: Attempt to invoke virtual method ‘void android.support.v4.view.ViewPager.setText………
原代码:

  NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
        navigationView.setNavigationItemSelectedListener(this);
        Intent intent=getIntent();
        Bundle bundle=intent.getExtras();
        if (bundle!=null){
            String header_nav_name_str=bundle.getString("account");
            System.out.println("name"+header_nav_name_str);
            header_nav_name.setText(header_nav_name_str);}
            else{
            header_nav_name.setText("未登录");
        }

一直找不到那个TextView
改成
` NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
navigationView.setNavigationItemSelectedListener(this);

   // View nav_header_nav=navigationView.inflateHeaderView(R.layout.nav_header_nav);
    View nav_header_nav=navigationView.getHeaderView(0);
   TextView header_nav_name=(TextView)nav_header_nav.findViewById(R.id.header_nav_name);

    Intent intent=getIntent();
    Bundle bundle=intent.getExtras();
    if (bundle!=null){
        String header_nav_name_str=bundle.getString("account");
        System.out.println("name"+header_nav_name_str);
        header_nav_name.setText(header_nav_name_str);}
        else{
        header_nav_name.setText("未登录");
    }`

使用View nav_header_nav=navigationView.inflateHeaderView(R.layout.nav_header_nav);可能会出现有两个header的情况,所以我改成了 View nav_header_nav=navigationView.getHeaderView(0);其中.nav_header_nav时xml文件名

扫描二维码关注公众号,回复: 1728202 查看本文章

猜你喜欢

转载自blog.csdn.net/qq_40916110/article/details/79862506