【问题标题】:ImageView is null (NullPointerException) [duplicate]ImageView 为空(NullPointerException)[重复]
【发布时间】: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


【解决方案1】:

尝试使用setBackgroundResource() 而不是setImageResource()

【讨论】:

  • 并使用 getResources().getDrawable(R.drawable.id)
  • 不行,还是一样的错误。
  • 你的 loadLocale 函数是在 setContenView 之前吗?
  • 是的,在它之前
猜你喜欢
  • 2017-03-13
  • 1970-01-01
  • 1970-01-01
  • 2017-06-11
  • 1970-01-01
  • 1970-01-01
  • 2017-04-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多