4
回答
关于Android ImgeView显示图像,点击按钮上一张/下一张的功能出现故障问题
开发十年,就只剩下这套Java开发体系了   

我想实现的功能:利用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

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

举报
公子彦
发帖于3年前 4回/1K+阅
顶部