在 android 上转到另一个 activity 的按钮不断崩溃

Button that goes to another activity on android keeps crashing

我正在尝试制作一个 gridview gallery.When 你点击图库中的照片,它会在不同的 activity 中打开。 问题是,如果用户没有返回他 phone 的按钮,他就无法返回到 gridview。 所以我做了一个按钮返回。按钮代码:


public class Fullscreen extends AppCompatActivity {


    ImageView imageView;
    private Button button;

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


        button = (Button) findViewById(R.id.button);
        button.setOnClickListener(new View.OnClickListener(){


            @Override
            public void onClick(View v) {
                GoToGallery();
            }


        });






        imageView = (ImageView) findViewById(R.id.image_view);




        Intent i = getIntent();

        int position = i.getExtras().getInt("id");


        ImageAdapter imageAdapter = new ImageAdapter(this);

        imageView.setImageResource(imageAdapter.imageArray[position]);
    }


    public void GoToGallery(){
        Intent intent = new Intent(this, Fullscreen.class);
        startActivity(intent);
    }


}

它位于新的全屏 activity 中,您第一次加载该应用程序时它可以正常工作..但是如果您打开第二张图片并按下按钮,它只会崩溃一次。 我得到的唯一警告是:Method invocation 'getInt' may produce 'NullPointerException' 但我不知道如何处理它,而且我读到大多数时候它并不重要。

提前致谢。

您的 GoToGallery 函数再次打开相同的 activity 全屏并且没有传递 id,因此行 imageView.setImageResource(imageAdapter.imageArray[position]); 导致 NullPointerException

更新按钮 OnClickListener 以解决问题。调用 finish() 方法关闭当前 activity 并返回上一个

 button.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View v) {
               finish();
            }
        });

首先你不会去不同的 activity 你开始相同 activity 再看看你的代码 :

public void GoToGallery(){
    Intent intent = new Intent(this, Fullscreen.class); //Fullscreen.class is same activity from where you are starting
    startActivity(intent);
}

另一件事是,当你开始相同的 activity 时,它应该没有任何借口地开始,你喜欢异常,当你开始相同的 activity 时,你发现那是 because you are not putting any extras =] 但你正在尝试 getInt 所以在我看来试试这个代码它可能对你有帮助 :

public void GoToGallery(){
    onBackPressed();
}