【发布时间】:2021-02-26 16:46:36
【问题描述】:
我正在尝试制作一个迷你项目,在编译整个应用程序之前,所有这些操作栏都可以工作,但编译后出现此错误。
FATAL EXCEPTION: main
Process: com.example.rentngo, PID: 7674
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.rentngo/com.example.rentngo.CarList}: java.lang.NullPointerException: Attempt to invoke virtual method 'void androidx.appcompat.app.ActionBar.setTitle(java.lang.CharSequence)' on a null object reference
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void androidx.appcompat.app.ActionBar.setTitle(java.lang.CharSequence)' on a null object reference
at com.example.rentngo.CarList.onCreate(CarList.java:21)
carlist.java 中第 21 行的代码基本上是两个 getSupportActionBar() 代码。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_car_list);
getSupportActionBar().setTitle("Select Your Ride!");
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
基本上这条错误消息出现在包含上述代码行的每个页面中,我似乎无法在这里找到主要的错误来源。起初我以为我的主页中的工具栏是原因,但是即使我删除了它,这个错误仍然存在。想知道一些建议,并会在需要时在此处编辑和发布任何需要的代码,因为我不确定要发布哪一部分
编辑:
这是 carlist.java 的 xml 代码,它基本上是一个带有 recyclerview 的空约束
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".CarList">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/browsedRecycler"
android:layout_width="0dp"
android:layout_height="0dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
</androidx.recyclerview.widget.RecyclerView>
</androidx.constraintlayout.widget.ConstraintLayout>
Manifest 的代码
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.rentngo">
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />
<application
android:allowBackup="true"
android:icon="@mipmap/ic_app"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_app_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<!-- Payment -->
<activity android:name=".MainPayActivity"
android:parentActivityName=".qrCode"/>
<activity android:name=".newPayment"
android:parentActivityName=".payment" />
<activity android:name=".qrPay"
android:parentActivityName=".qrCode" />
<activity android:name=".qrCode"
android:parentActivityName=".payment" />
<activity android:name=".cashPayment"
android:parentActivityName=".payment" />
<activity android:name=".creditCard"
android:parentActivityName=".payment" />
<activity android:name=".payment"
android:parentActivityName=".CarList" />
<!-- Maps -->
<activity android:name=".MapsActivity"></activity>
<!-- Car/list/news -->
<activity android:name=".carsInfoPage"
android:parentActivityName=".CarList" />
<activity android:name=".CarList"
android:parentActivityName=".HomeActivity" >
</activity>
<activity android:name=".news"
android:parentActivityName=".HomeActivity" />
<!-- Login/SignUp/Home -->
<activity android:name=".ResetPWActivity" />
<activity android:name=".ProfileActivity" />
<activity android:name=".SignupActivity" />
<activity android:name=".LoginActivity">
</activity>
<activity android:name=".HomeActivity" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
styles.xml 的代码
<resources xmlns:tools="http://schemas.android.com/tools">
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">#FFFFFF</item>
<item name="colorPrimaryDark">#00BCD4</item>
<item name="colorAccent">@color/colorAccent</item>
<!--Maps styles-->
<item name="android:spinnerItemStyle">
@style/SpinnerItemStyle
</item>
<item name="spinnerDropDownItemStyle">
@style/SpinnerDropDownItemStyle
</item>
<!-- Status bar color. -->
<item name="android:statusBarColor" tools:targetApi="l">?attr/colorPrimaryVariant</item>
</style>
<!--Main application theme-->
<style name="MainTheme" parent="Theme.AppCompat.NoActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">#FFFFFF</item>
<item name="colorPrimaryDark">#00BCD4</item>
<item name="colorAccent">@color/colorAccent</item>
</style>
<!--Toolbar Font Style-->
<!-- <style name="toolbarTheme">-->
<!-- <item name="android:fontFamily">@font/poppinsmedium</item>-->
<!-- <item name="colorPrimary">#FFFFFF</item>-->
<!-- <item name="colorPrimaryDark">#00BCD4</item>-->
<!-- <item name="colorAccent">#00DFCA</item>-->
<!-- </style>-->
<!--Maps Spinner-->
<style name="SpinnerItemStyle">
<item name="android:textSize">14sp</item>
<item name="android:textColor">@android:color/secondary_text_light</item>
</style>
<style name="SpinnerDropDownItemStyle">
<item name="android:textSize">15sp</item>
<item name="android:gravity">center_vertical</item>
<item name="android:paddingLeft">8dp</item>
<item name="android:paddingRight">8dp</item>
<item name="android:textColor">@android:color/primary_text_light</item>
</style>
<!--Maps Switch Theme-->
<style name="SwitchTheme" parent="AppTheme">
<item name="colorSwitchThumbNormal">@color/colorPrimary</item>
<item name="android:colorForeground">@color/colorPrimary</item>
</style>
</resources>
如前所述,我认为这是工具栏的错,这就是为什么在 styles.xml 中的工具栏被注释
编辑: 我发现错误,它在我的styles.xml中,忽略了它说noActionBar的部分
【问题讨论】:
-
你使用的是哪个app风格,请为activity添加xml
-
添加您的
AndroidManifest.xml和styles.xml代码。
标签: java android android-studio nullpointerexception android-actionbar