Java 从imageview返回主屏幕android studio

Java 从imageview返回主屏幕android studio,java,android-studio,android-imageview,Java,Android Studio,Android Imageview,我有一个在imageView中显示随机图像的方法,但有一个问题。 随机图像显示良好,但当我按手机上的后退键返回主屏幕时,应用程序关闭!如果我在图像上向左或向右滑动,奇怪的是它会显示阵列中的其他图像!我想要的是,当用户看完图像后,我想退出imageView并再次看到要显示的主屏幕!多谢各位 导入android.content.Intent; 导入android.graphics.drawable.AnimationDrawable; 导入android.os.Handler; 导入android

我有一个在imageView中显示随机图像的方法,但有一个问题。 随机图像显示良好,但当我按手机上的后退键返回主屏幕时,应用程序关闭!如果我在图像上向左或向右滑动,奇怪的是它会显示阵列中的其他图像!我想要的是,当用户看完图像后,我想退出imageView并再次看到要显示的主屏幕!多谢各位

导入android.content.Intent;
导入android.graphics.drawable.AnimationDrawable;
导入android.os.Handler;
导入android.support.v7.app.AppActivity;
导入android.os.Bundle;
导入android.view.view;
导入android.widget.ImageView;
导入android.widget.TextView;
导入com.google.android.gms.ads.AdRequest;
导入com.google.android.gms.ads.AdView;
导入java.util.Random;
公共类MainActivity扩展了AppCompatActivity{
私有图像视图指纹;
私有文本视图结果;
私有动画可绘制的拇指动画;
私有字符串[]moodResults;
私人可运行的mRunnable;
private ImageView resultImageView;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
getSupportActionBar().hide();
setContentView(R.layout.activity_main);
AdView mAdView=(AdView)findViewById(R.id.AdView);
AdRequest AdRequest=新建AdRequest.Builder().build();
mAdView.loadAd(adRequest);
指纹=(ImageView)findViewById(R.id.thumbPrint);
thumbPrint.setBackgroundResource(R.drawable.thumb_动画);
thumbAnimation=(AnimationDrawable)thumbPrint.getBackground();
结果=(TextView)findViewById(R.id.resultText);
resultImageView=(ImageView)findViewById(R.id.resultImageView);
thumbPrint.setOnLongClickListener(新视图。OnLongClickListener(){
@凌驾
仅长按公共布尔值(视图v){
thumbAnimation.start();
showImage();
返回true;
}
});
}
公共void showImage(){
mRunnable=newrunnable(){
final int[]imageIds={R.drawable.one,R.drawable.two,R.drawable.three};//这是您的数组,其中包含每个图像的资源id
随机r=新随机();
Handler mHandler=新的Handler();
@凌驾
公开募捐{
int rand=(int)(Math.random()*moodResults.length);
result.setText(moodResults[rand]);
int randomInt=r.nextInt(imageid.length);
resultImageView.setBackgroundResource(imageIds[randomInt]);
//停止动画
thumbAnimation.stop();
}
};
//这里第一次调用处理程序;mRunnable中的代码将在5秒后执行
Handler mHandler=新的Handler();
mHandler.postDelayed(mRunnable,5000);
}
@凌驾
public void onBackPressed(){
意向意向=新意向(MainActivity.this,MainActivity.class);
星触觉(意向);
}

}
据我所知,当您在不需要时隐藏结果视图元素时,它可以工作。 换句话说:尝试重置您使用
showImage()所做的所有更改
我不在家测试,sry

@Override
public void onBackPressed(){
   if(resultImageView.getVisibility == View.VISIBLE){
      resultImageView.setVisibility(View.INVISIBLE); //or GONE 
      result.setVisibility(View.INVISIBLE);
   }else{
      finish();
   }
}

@Override
public void run() {
   [...]
   resultImageView.setVisibility(View.VISIBLE);
   result.setVisibility(View.VISIBLE);
   [...]
}

我认为您需要覆盖
OnBackPressed
方法,该方法是否适用于按下的phones back按钮!我已经完成了以下操作,无论用户如何使用back按钮@Override public void onBackPressed()退出应用程序,它都会起作用。{Intent Intent=new Intent(MainActivity.this,MainActivity.class);startActivity(Intent);}注意后退。多次启动Main活动看起来是正确的,但不是正确的方式。在onBackPressed方法中输入什么代码是正确的?它将我从图像视图发送到主屏幕,但随后无法退出应用程序。我需要有关保存图像视图的活动的更多信息。你使用的结构当然,我会编辑文章,并显示完整的活动作为它唯一的1个活动