开发者社区> 问答> 正文

关于Android ImgeView显示图像,点击按钮上一张/下一张的功能出现故障问题?报错

我想实现的功能:利用ImageView显示图像,如图放置两个按钮,点击实现上一张/下一张切换

java主要代码如下:

import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;

public class MainActivity extends Activity {
	
	//将所有图片储存到数组中
	int[] imgId = {R.drawable.img01,R.drawable.img02,R.drawable.img03,
			R.drawable.img04,R.drawable.img05,R.drawable.img06};
	private Button btnPrev,btnNext;
	private ImageView imgPhoto;
	
	int p = 0;//图片的索引
	int count = imgId.length;//共有多少张图片
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		//获取资源中文件中的界面组件
		btnPrev = (Button)findViewById(R.id.btnPrev);
		btnNext = (Button)findViewById(R.id.btnNext);
		imgPhoto = (ImageView)findViewById(R.id.imgphoto);
		
		//设置button组件Click事件的Listener
		btnPrev.setOnClickListener(btnPrevListener);
		btnNext.setOnClickListener(btnNextListener);
	}

	//定义btnPrev按钮的onClick方法
	private Button.OnClickListener btnPrevListener = new 
			Button.OnClickListener(){

				@Override
				public void onClick(View v) {
					// TODO Auto-generated method stub
					p--;
					if(p<0){
						p = imgId.length-1;	
					}
					imgPhoto.setImageResource(imgId[p]);
					setTitle("第"+(p+1)+"/"+count);
				}
			};
	//定义btnNext按钮的OnClick方法
	private Button.OnClickListener btnNextListener = new 
			Button.OnClickListener(){

				@Override
				public void onClick(View v) {
					// TODO Auto-generated method stub
					p++;
					if(p == imgId.length){
						p = 0;	
					}
					imgPhoto.setImageResource(imgId[p]);
					setTitle("第"+(p+1)+"/"+count);
				}
			};
....
main.xml代码(Strings.xml部分就不放出来了)

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="photoplayer.com.MainActivity" >
	
    <Button 
        android:id="@+id/btnPrev"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="@string/btn_prev"/>
    <Button 
        android:id="@+id/btnNext"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="@string/btn_next"/>
    
    <ImageView 
        android:id="@+id/imgphoto"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/img01"
        android:layout_gravity="center_horizontal"
        android:scaleType="fitCenter" 
        android:contentDescription="@string/des"/>

</LinearLayout>
现在问题来了,在模拟器运行,点击按钮『上一张』可以实现,点击『下一张』程序报错

我的模拟器版本是4.1.1,我编译所用ADT版本是23.0.6,SDK版本是6.0

创建Android项目设置的TargetSDK是4.X

麻烦大家帮我看一下怎么回事,谢谢!

展开
收起
爱吃鱼的程序员 2020-06-10 13:39:51 942 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

    把p设置为静态变量我试了一下,设置静态变量也不行,同样的错误 在真机上试过了么?回复<aclass='referer'target='_blank'>@公子彦:模拟器本身就有各种各样的bug,这些bug还真不好说清楚在真机上可以运行,真机版本是5.1。那为什么模拟器4.1的版本不行呢?是第一次上一张就不行吗?感觉第一次点的时候是可以切换的,再点就不行了吧我说的可能不太清楚,第一个按钮(也就是实现『上一张』功能的按钮)可以正常使用。第二个按钮(NEXT)完全不能用,只要一点击程序就崩溃了。刚刚在真机(版本5.1)测试了一下,可以使用,但是模拟器(4.1的版本)就会出现这种状况。建议使用<spanstyle="color:#333333;font-family:Helvetica,arial,freesans,clean,sans-serif;font-size:10pt;line-height:1.5;background-color:#FFFFFF;">XUtils这种框架进行图片加载

    2020-06-10 13:40:07
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
58同城Android客户端Walle框架演进与实践之路 立即下载
Android组件化实现 立即下载
蚂蚁聚宝Android秒级编译——Freeline 立即下载