Android Studio 使用旋转动画时Android应用程序崩溃

mzaanser  于 2022-11-16  发布在  Android
关注(0)|答案(1)|浏览(195)

我有这段代码,并尝试在我的imageView上使用rotate,但在使用findviewbyid时它抛出null,但我在同一个类中有它。我在同一个项目中有几个单独的Activity,这是其中之一,它从主Activity打开

package com.example.gyakorlozh;

ImageView kedvencEvszak;
TextView tw;
Animation anim;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_evszak);
    kedvencEvszak.findViewById(R.id.kedvencEvszak);
    tw.findViewById(R.id.textView);
    anim = AnimationUtils.loadAnimation(EvszakActivity.this, R.anim.kepanimacio);

    kedvencEvszak.startAnimation(anim);

}

如果我试图运行它崩溃,请帮助我解决这个问题。
该动画是一个简单的旋转:

<rotate android:pivotY="50%"
    android:pivotX="50%"
    android:fromDegrees="0"
    android:toDegrees="360"
    android:duration = "2000"
    android:startOffset = "3000"/>
xam8gpfp

xam8gpfp1#

假设您的XML和其他东西都已正确配置。
这两个都没什么用

kedvencEvszak.findViewById(R.id.kedvencEvszak);
tw.findViewById(R.id.textView);

所以当你这么做的时候

kedvencEvszak.startAnimation(anim);

kedvencEvszak不存在的,这就是为什么会出现NPE异常。
请尝试执行此操作,

kedvencEvszak = findViewById(R.id.kedvencEvszak);
tw = findViewById(R.id.textView);

然后从kedvencEvszak调用动画

kedvencEvszak.startAnimation(anim);

而您发布的onCreate代码将变成这样

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_evszak);
    kedvencEvszak = findViewById(R.id.kedvencEvszak);
    tw = findViewById(R.id.textView);
    anim = AnimationUtils.loadAnimation(EvszakActivity.this, R.anim.kepanimacio);

    kedvencEvszak.startAnimation(anim);

}

TextViewtw与抛出NullPointerExceptionkedvencEvszak没有任何关系,但我添加它是为了保存您在决定使用它时感到头痛。

相关问题