getSystemService NullPointerException
getSystemService NullPointerException
package com.example.myapplication
import android.app.Activity
import android.content.Context
import android.os.*
import android.util.Log
import android.view.DragEvent
import android.view.MotionEvent
import android.view.ScaleGestureDetector
import android.view.View
import android.widget.Button
import android.widget.ImageView
import android.widget.Toast
import androidx.annotation.RequiresApi
import androidx.appcompat.app.AppCompatActivity
import androidx.constraintlayout.widget.ConstraintSet
import androidx.wear.widget.SwipeDismissFrameLayout
class MetroMapActivity : Activity()
{
private lateinit var image:ImageView
private var gesture:ScaleGestureDetector? = null
private var scaleFactor = 1.0f
private lateinit var swipeview:SwipeDismissFrameLayout
private lateinit var toast: Toast
private lateinit var buttonone:Button
private lateinit var vibratorManager: VibratorManager
private lateinit var vibrator: Vibrator
@RequiresApi(Build.VERSION_CODES.S)
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_metro_map)
swipeview = findViewById(R.id.swipe)
toast = Toast.makeText(this,"a",Toast.LENGTH_SHORT)
image = findViewById(R.id.metromap)
buttonone = findViewById<Button>(R.id.button)
gesture = ScaleGestureDetector(this, ScaleListener())
swipeview.setOnTouchListener(swipetouch())
buttonone.setOnTouchListener(buttontouch())
vibratorManager = this.getSystemService(Context.VIBRATOR_MANAGER_SERVICE) as VibratorManager
//vibrator = vibratorManager.defaultVibrator
//vibrator.vibrate(VibrationEffect.createOneShot(100, 30))
//image.setOnTouchListener(imagetouch())
}
我正在制作 wearOS 应用程序。
当我调用 getSystemService() 时,我得到 NullPointerException。似乎 getSystemService() 保持 returns 为空,但我不知道为什么。
我还在 AndroidManifest.xml.
中写了
我什至无法得到线索。请帮助...请...
我曾经在 OnResume() 中写过 getSystemService() 因为有人告诉我它
有些东西还没有初始化(?)但它也没有工作。
这是堆栈跟踪:
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.myapplication, PID: 27345
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.myapplication/com.example.myapplication.MainActivity}: java.lang.NullPointerException: null cannot be cast to non-null type android.os.VibratorManager
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3456)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3612)
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:2073)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:246)
at android.app.ActivityThread.main(ActivityThread.java:7690)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:593)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:995)
Caused by: java.lang.NullPointerException: null cannot be cast to non-null type android.os.VibratorManager
at com.example.myapplication.MainActivity.onCreate(MainActivity.kt:31)
at android.app.Activity.performCreate(Activity.java:8009)
at android.app.Activity.performCreate(Activity.java:7993)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1309)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3429)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3612)
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:2073)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:246)
at android.app.ActivityThread.main(ActivityThread.java:7690)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:593)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:995)
I/Process: Sending signal. PID: 27345 SIG: 9
VIBRATOR_MANAGER_SERVICE
已添加到 API 级别 31 (Android 12),而较低 API 级别的设备 运行 对此一无所知。
在较旧的 API 级别上,您可以使用 VIBRATOR_SERVICE
来检索 Vibrator
(而不是 VibratorManager
)。
package com.example.myapplication
import android.app.Activity
import android.content.Context
import android.os.*
import android.util.Log
import android.view.DragEvent
import android.view.MotionEvent
import android.view.ScaleGestureDetector
import android.view.View
import android.widget.Button
import android.widget.ImageView
import android.widget.Toast
import androidx.annotation.RequiresApi
import androidx.appcompat.app.AppCompatActivity
import androidx.constraintlayout.widget.ConstraintSet
import androidx.wear.widget.SwipeDismissFrameLayout
class MetroMapActivity : Activity()
{
private lateinit var image:ImageView
private var gesture:ScaleGestureDetector? = null
private var scaleFactor = 1.0f
private lateinit var swipeview:SwipeDismissFrameLayout
private lateinit var toast: Toast
private lateinit var buttonone:Button
private lateinit var vibratorManager: VibratorManager
private lateinit var vibrator: Vibrator
@RequiresApi(Build.VERSION_CODES.S)
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_metro_map)
swipeview = findViewById(R.id.swipe)
toast = Toast.makeText(this,"a",Toast.LENGTH_SHORT)
image = findViewById(R.id.metromap)
buttonone = findViewById<Button>(R.id.button)
gesture = ScaleGestureDetector(this, ScaleListener())
swipeview.setOnTouchListener(swipetouch())
buttonone.setOnTouchListener(buttontouch())
vibratorManager = this.getSystemService(Context.VIBRATOR_MANAGER_SERVICE) as VibratorManager
//vibrator = vibratorManager.defaultVibrator
//vibrator.vibrate(VibrationEffect.createOneShot(100, 30))
//image.setOnTouchListener(imagetouch())
}
我正在制作 wearOS 应用程序。
当我调用 getSystemService() 时,我得到 NullPointerException。似乎 getSystemService() 保持 returns 为空,但我不知道为什么。
我还在 AndroidManifest.xml.
中写了
这是堆栈跟踪:
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.myapplication, PID: 27345
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.myapplication/com.example.myapplication.MainActivity}: java.lang.NullPointerException: null cannot be cast to non-null type android.os.VibratorManager
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3456)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3612)
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:2073)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:246)
at android.app.ActivityThread.main(ActivityThread.java:7690)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:593)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:995)
Caused by: java.lang.NullPointerException: null cannot be cast to non-null type android.os.VibratorManager
at com.example.myapplication.MainActivity.onCreate(MainActivity.kt:31)
at android.app.Activity.performCreate(Activity.java:8009)
at android.app.Activity.performCreate(Activity.java:7993)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1309)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3429)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3612)
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:2073)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:246)
at android.app.ActivityThread.main(ActivityThread.java:7690)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:593)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:995)
I/Process: Sending signal. PID: 27345 SIG: 9
VIBRATOR_MANAGER_SERVICE
已添加到 API 级别 31 (Android 12),而较低 API 级别的设备 运行 对此一无所知。
在较旧的 API 级别上,您可以使用 VIBRATOR_SERVICE
来检索 Vibrator
(而不是 VibratorManager
)。