ProgressBar在AnimationListener上给我NullPointerException

时间:2014-02-02 08:42:23

标签: java android animation nullpointerexception progress-bar

我正在研究一个项目,并在我的意图中添加了ProgressBarProgressBar位于图片顶部。

每当我添加以下代码

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_greet);


        pb = (ProgressBar)findViewById(R.id.progressBar1);


        pb.getAnimation().setAnimationListener(new AnimationListener(){

            @Override
            public void onAnimationEnd(Animation animation) {
                // TODO Auto-generated method stub

            }

            @Override
            public void onAnimationRepeat(Animation animation) {
                // TODO Auto-generated method stub

            }

            @Override
            public void onAnimationStart(Animation animation) {
                // TODO Auto-generated method stub

            }

        });

        Intent intent = new Intent(Greet.this, SearchField.class);
        startActivity(intent);

    }

我得到nullPointerException

当我删除

pb.getAnimation().setAnimationListener(new AnimationListener(){

            @Override
            public void onAnimationEnd(Animation animation) {
                // TODO Auto-generated method stub

            }

            @Override
            public void onAnimationRepeat(Animation animation) {
                // TODO Auto-generated method stub

            }

            @Override
            public void onAnimationStart(Animation animation) {
                // TODO Auto-generated method stub

            }

        });

错误消失了。

我无法弄清楚为什么我会得到NullPointerException,查看代码,看起来应该是这样。

我觉得我要在这里学习一些新东西因为我清理了项目,尝试了它并且错误一直在发生,所以我不确定我错过了什么。

编辑:

XML格式的ActivityGreet

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#ffffff"
    tools:context=".Greet" >

    <ImageView
        android:id="@+id/fitnessPic"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:contentDescription="@string/description"
        android:src="@drawable/appleorange"/>

    <ProgressBar
        android:id="@+id/progressBar1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true"
        android:layout_marginBottom="64dp" />

</RelativeLayout>

在图像上放置ProgressBar是否存在已知问题?

2 个答案:

答案 0 :(得分:0)

  1. 确保您的activity_greet布局中存在ID为ProgressBar的{​​{1}}。
  2. 确保您导入的是项目的progressBar1课程,而不是R,因为android.R可能还包含android.R

答案 1 :(得分:0)

我认为你还没有在 / res / anim 文件夹中定义动画。像这样更改你的代码:

ProgressBar pb = (ProgressBar) findViewById(R.id.progressbar1);
Animation progressAnimation= AnimationUtils.loadAnimation(this, R.anim.progressAnim);
pb.startAnimation(progressAnimation);

分别实现动画侦听器而不是匿名。

有关详细信息,请参阅Android Docs