空指针异常,findviewbyid没有强制转换

风流司郎中 2018-07-11 10:13:45
package hb.com.eirims;

import android.graphics.Color;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.Toolbar;

import hb.com.eirims.R;

public class MainActivity extends AppCompatActivity {
private Toolbar toolbar;

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


findViews(); //获取控件
toolbar.setTitle("首页");//设置Toolbar标题
toolbar.setTitleTextColor(Color.parseColor("#FFFFFF")); //设置标题颜色
/* actionBar= getActionBar(); */
setSupportActionBar(toolbar);//支持ActionBar

}

private void findViews() {
toolbar = findViewById(R.id.m_tool);

}
}
]



这是我的主界面,想要调用一个自己写的toolbar,但是一直空指针异常
<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/m_tool"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/colorPrimary"
android:minHeight="?attr/actionBarSize"
android:popupTheme="@style/ThemeOverlay.AppCompat.Light"
app:theme="@style/ThemeOverlay.AppCompat.ActionBar">

</android.support.v7.widget.Toolbar>


这是报错信息
E/AndroidRuntime: FATAL EXCEPTION: main
Process: hb.com.eirims, PID: 17680
java.lang.RuntimeException: Unable to start activity ComponentInfo{hb.com.eirims/hb.com.eirims.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.support.v7.widget.Toolbar.setTitle(java.lang.CharSequence)' on a null object reference
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2902)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3037)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1797)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:193)
at android.app.ActivityThread.main(ActivityThread.java:6642)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.support.v7.widget.Toolbar.setTitle(java.lang.CharSequence)' on a null object reference
at hb.com.eirims.MainActivity.onCreate(MainActivity.java:20)
at android.app.Activity.performCreate(Activity.java:7131)
at android.app.Activity.performCreate(Activity.java:7122)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1271)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2882)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3037) 
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78) 
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108) 
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1797) 
at android.os.Handler.dispatchMessage(Handler.java:106) 
at android.os.Looper.loop(Looper.java:193) 
at android.app.ActivityThread.main(ActivityThread.java:6642) 
at java.lang.reflect.Method.invoke(Native Method) 
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858) 

...全文
182 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
i風 2018-07-11
  • 打赏
  • 举报
回复
你试试重新创建一个工程然后再粘贴代码看看行不行(3.0以后的studio是不需要强制类型转换的)
风流司郎中 2018-07-11
  • 打赏
  • 举报
回复
引用 5 楼 Hard_F 的回复:
我使用的是v7:26.1.0,不过应该和这没关系的,如果V7有问题或许报的就不是Null了


奇怪欸,我把这些复制到一个别人的Demo里面试了下,就是可以的欸,findviewbyid那里也会强制转换,也是对的。我这个就不行。是安卓版本的问题?
i風 2018-07-11
  • 打赏
  • 举报
回复
我使用的是v7:26.1.0,不过应该和这没关系的,如果V7有问题或许报的就不是Null了
风流司郎中 2018-07-11
  • 打赏
  • 举报
回复
引用 3 楼 Hard_F 的回复:
[quote=引用 2 楼 TheSundanceKid 的回复:]
[quote=引用 1 楼 Hard_F 的回复:]
这个错报的是找空控件的问题,你可以尝试换一个有意义的控件id,或者将findviewBayid写在onCreate里面。


换个控件id是指?我id那里改一下?不行欸。findviewbyid放在onCreate里面试了下也不行诶。是我自定义toolbar弄错了吗?我看这种空指针错误一般是在控件不存在才会发生[/quote]
我刚刚试了一下你的代码是没有问题的。[/quote]
纳尼??我的心好痛,难道是我的support.v7.app.这个啥的问题
i風 2018-07-11
  • 打赏
  • 举报
回复
引用 2 楼 TheSundanceKid 的回复:
[quote=引用 1 楼 Hard_F 的回复:]
这个错报的是找空控件的问题,你可以尝试换一个有意义的控件id,或者将findviewBayid写在onCreate里面。


换个控件id是指?我id那里改一下?不行欸。findviewbyid放在onCreate里面试了下也不行诶。是我自定义toolbar弄错了吗?我看这种空指针错误一般是在控件不存在才会发生[/quote]
我刚刚试了一下你的代码是没有问题的。
风流司郎中 2018-07-11
  • 打赏
  • 举报
回复
引用 1 楼 Hard_F 的回复:
这个错报的是找空控件的问题,你可以尝试换一个有意义的控件id,或者将findviewBayid写在onCreate里面。


换个控件id是指?我id那里改一下?不行欸。findviewbyid放在onCreate里面试了下也不行诶。是我自定义toolbar弄错了吗?我看这种空指针错误一般是在控件不存在才会发生
i風 2018-07-11
  • 打赏
  • 举报
回复
这个错报的是找空控件的问题,你可以尝试换一个有意义的控件id,或者将findviewBayid写在onCreate里面。

80,349

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧