当我尝试启动时,是什么导致我的应用程序崩溃?

问题描述 投票:0回答:1

应用程序在主页出现之前崩溃。 尝试调用 android.content.Context.getApplicationInfo() 时返回空指针异常

我正在尝试为浮动动画制作动画 操作按钮,使其展开并显示其他两个按钮。 我制作了 xml 动画文件并尝试添加逻辑,以便当我点击 fab 时动画开始,但在运行应用程序时,它崩溃了。我对 Android 开发相当陌生,在 java 方面更有经验,但不知道如何查找或纠正空指针异常。



private Animation rotateOpen() {
        return AnimationUtils.loadAnimation(this, R.anim.rotate_add_btn_open_anim);

    }

private Animation rotateClose() {
        return AnimationUtils.loadAnimation(this, R.anim.rotate_add_btn_close_anim);

    }

private Animation fromBottom() {
        return AnimationUtils.loadAnimation(this, R.anim.from_bottom_anim);

    }

 private Animation toBottom() {
        return AnimationUtils.loadAnimation(this, R.anim.to_bottom_anim);

    }


    Button addBtn = findViewById(R.id.add_btn);

    Button addTextBtn = findViewById(R.id.add_text_btn);

    Button addImageBtn = findViewById(R.id.add_image_btn);

    private boolean clicked = false;


onCreate(..) {

    ...

    addBtn.setOnClickListener(v -> onFabExpanded());



        addTextBtn.setOnClickListener(v -> Toast.makeText(MainActivity.this, R.string.add_text_note,                    Toast.LENGTH_SHORT).show());



        addImageBtn.setOnClickListener(v -> Toast.makeText(MainActivity.this, R.string.add_image_note,                  Toast.LENGTH_SHORT).show());

}



private void onFabExpanded() {



        setVisibility(clicked);

        setAnimation(clicked);



        clicked = !clicked;

    }



    private void setVisibility(Boolean clicked) {

        if (!clicked) {

            addTextBtn.setVisibility(View.VISIBLE);

            addImageBtn.setVisibility(View.VISIBLE);

        }

        else {

            addTextBtn.setVisibility(View.INVISIBLE);

            addImageBtn.setVisibility(View.INVISIBLE);

        }

    }



    private void setAnimation(Boolean clicked) {

        if (!clicked) {

            addTextBtn.startAnimation(fromBottom());

            addImageBtn.startAnimation(fromBottom());

            addBtn.startAnimation(rotateOpen());

        }

        else {

            addTextBtn.startAnimation(toBottom());

            addImageBtn.startAnimation(toBottom());

            addBtn.startAnimation(rotateClose());

        }

    }
java android android-animation
1个回答
0
投票

这个问题是可能的 这个问题重复

应用程序在运行时崩溃,因为您没有将布局与 Activity 连接,因此您必须使用 setContentView(Your_layout) 然后初始化按钮。

在 onCreate() 之前,您的 Activity 还没有 findViewById() 内部需要的窗口。在 setContentView() 之前(您应该在 onCreate() 中调用)也没有找到任何视图。


Class Something{


    Button addBtn ;
    Button addTextBtn ;
    Button addImageBtn ;

      onCreate(..) {

          setContentView(YOUR_LAYOUT)
          ...
          

          addImageBtn = findViewById(R.id.add_image_btn);
          addTextBtn  = findViewById(R.id.add_text_btn);
          addBtn  = findViewById(R.id.add_btn);

      }
}

欢迎来到 StackOverFlow !!

© www.soinside.com 2019 - 2024. All rights reserved.