在 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();
}
我正在尝试制作一个 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();
}