【发布时间】:2020-02-13 14:41:19
【问题描述】:
我正在尝试设置 ImageView 的 srcCompat,但得到了这个错误。
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.pangelyn/com.example.pangelyn.SwipeRight}: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.ImageView.setImageResource(int)' on a null object reference
我已经检查了 SO 中的多个帖子,但似乎没有任何效果。
Java 文件:
private void loadLocale() {
SharedPreferences prefs = getSharedPreferences("Settings", Activity.MODE_PRIVATE);
String language = prefs.getString("Lang","");
setLocale(language);
ImageView imageView = findViewById(R.id.imageView_flag);
if (language.equals("en")) {
imageView.setImageResource(R.drawable.usa);
}
else if (language.equals("in")) {
imageView.setImageResource(R.drawable.indonesia);
}
else if (language.equals("fil")) {
imageView.setImageResource(R.drawable.philippines);
}
}
XML 文件:
<ImageView
android:id="@+id/imageView_flag"
android:layout_width="30sp"
android:layout_height="30sp"
android:layout_alignParentRight="true"
android:layout_marginRight="5sp"
android:background="@drawable/stroke"
android:padding="3dp"
android:scaleType="centerInside"
app:srcCompat="@drawable/philippines" />
编辑:
2020-02-13 23:32:37.312 9854-9854/com.example.pangelyn E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.pangelyn, PID: 9854
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.pangelyn/com.example.pangelyn.SwipeRight}: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.ImageView.setImageResource(int)' on a null object reference
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2778)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2856)
at android.app.ActivityThread.-wrap11(Unknown Source:0)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1589)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6494)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.ImageView.setImageResource(int)' on a null object reference
at com.example.pangelyn.SwipeRight.loadLocale(SwipeRight.java:164)
at com.example.pangelyn.SwipeRight.onCreate(SwipeRight.java:42)
at android.app.Activity.performCreate(Activity.java:7009)
at android.app.Activity.performCreate(Activity.java:7000)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1214)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2731)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2856)
at android.app.ActivityThread.-wrap11(Unknown Source:0)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1589)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6494)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)
【问题讨论】:
-
异常说它是
setBackground(),但您发布的代码有setImageResource()。请发布您的完整堆栈跟踪。另请注意,==不适用于字符串比较,请改用equals()。 -
但是,我没有设置任何背景
-
你有
"@drawable/stroke文件吗? -
是的,我确实有那个文件。
-
@Nodoodle 您可能使用了错误的活动布局,请检查
setContentView(R.layout.your_activity_layout)中使用的布局文件。
标签: java android nullpointerexception